Unity是一款非常流行的游戲開發(fā)軟件。它的功能十分強(qiáng)大,能夠適應(yīng)不同的游戲開發(fā)要求。游戲開發(fā)人員可以使用Unity創(chuàng)建任意類型的游戲,從世界級(jí)的RPG游戲到最受歡迎的增強(qiáng)現(xiàn)實(shí)游戲Pokemon Go。
Unity不論是對(duì)獨(dú)立游戲開發(fā)人員或者共同完成某一個(gè)項(xiàng)目的的大型團(tuán)隊(duì)而言,它都是一個(gè)完美工具。但是由于其復(fù)雜性,使得Unity可能難以管理。今天,我們就為游戲開發(fā)者總結(jié)出了15條Unity開發(fā)建議和技巧,來幫助你更好地使用Unity。
一、Unity 使用技巧
1、避免Assets分支
所有的Asset都應(yīng)該只有一個(gè)唯一的版本。如果你真的需要一個(gè)分支版本的Prefab、Scene或是Mesh,那你要制定一個(gè)非常清晰的流程,來確定哪個(gè)是正確的版本。錯(cuò)誤的分支應(yīng)該起一個(gè)特別的名字,例如雙下劃線前綴:__MainScene_Backup。Prefab版本分支需要一個(gè)特別的流程來保證安全 。
2、Unity死機(jī)未保存場(chǎng)景
當(dāng)你在Unity中編輯場(chǎng)景,突然死機(jī)時(shí),可以在項(xiàng)目文件目錄中找到Temp文件夾,雙擊文件夾,找到_Backupscenes文件夾,把后綴為.backup的文件后綴改為.unity,然后拖進(jìn)Unity的Project界面里面,這樣就可以還原死機(jī)前場(chǎng)景最后情況。
3、考慮使用外部的關(guān)卡編輯工具
Unity不是一個(gè)完美的關(guān)卡編輯器。例如,我們使用TuDee來創(chuàng)建3D Tile-Based的游戲,這使我們可以獲得對(duì)Tile友好的工具的益處(網(wǎng)格約束,90度倍數(shù)的旋轉(zhuǎn),2D視圖,快速Tile選擇等)。從一個(gè)XML文件來實(shí)例化Prefab也很簡(jiǎn)單。
4、考慮把關(guān)卡保存為XML,而非scene
這是一種非常奇異的技術(shù):
●它能夠讓你不必每一個(gè)場(chǎng)景都設(shè)置一遍;
他能夠載入的更快(假設(shè)大多數(shù)對(duì)象都是在場(chǎng)景之間共享的)。
●它讓場(chǎng)景的版本號(hào)合并變的簡(jiǎn)單(就算是Unity的新的文本格式的Scene,也因?yàn)閿?shù)據(jù)太多,而讓版本號(hào)合并變的不切實(shí)際)。
●它能夠使得在關(guān)卡之間保持?jǐn)?shù)據(jù)更簡(jiǎn)便。
5、考慮編寫通用的自己定義Inspector代碼
實(shí)現(xiàn)自己定義的Inspector是非常直截了當(dāng)?shù)?。可是Unity的系統(tǒng)有非常多的缺點(diǎn):
●它不支持從繼承中獲益;
●它不同意定義字段級(jí)別的Inspector組件,而僅僅能是class類型級(jí)別。
你能夠通過從根本上又一次實(shí)現(xiàn)Inspector系統(tǒng)來處理這些問題。通過一些反射機(jī)制的小技巧,他并不像看上去那么看,文章底部(日后另作翻譯)將提供很多其它的實(shí)現(xiàn)細(xì)節(jié)。
關(guān)于場(chǎng)景組織
6、使用命名的空Game Object來做場(chǎng)景文件夾
細(xì)致的組織場(chǎng)景,就能夠方便的找到不論什么對(duì)象。
7、把控制對(duì)象和場(chǎng)景文件夾(空Game Objec)放在原點(diǎn)(0,0。0)
假設(shè)位置對(duì)于這個(gè)對(duì)象不重要。那么就把他放到原點(diǎn)。這樣你就不會(huì)遇到處理Local Space和World Space的麻煩,代碼也會(huì)更簡(jiǎn)潔。
8、盡量降低使用GUI組件的offset
通常應(yīng)該由控件的Layout父對(duì)象來控制Offset;它們不應(yīng)該依賴它們的爺爺節(jié)點(diǎn)的位置。位移不應(yīng)該互相抵消來達(dá)到正確顯示的目的。
基本上要防止了下列情況的發(fā)生:
父容器被放到了(100,-50),而字節(jié)點(diǎn)應(yīng)該在(10,10)。所以把他放到(90。60)[父節(jié)點(diǎn)的相對(duì)位置]。
這樣的錯(cuò)誤通常發(fā)生在容器不可見時(shí)。
9、把世界的地面放在Y=0
這樣能夠更方便的把對(duì)象放到地面上。而且在游戲邏輯中。能夠把世界作為2D空間來處理(假設(shè)合適的話),比如AI和物理模擬。
10、使游戲能夠從每一個(gè)Scene啟動(dòng)
這將大大的減少測(cè)試的時(shí)間。為了達(dá)到全部場(chǎng)景可執(zhí)行,你須要做兩件事:
●首先,假設(shè)須要前面場(chǎng)景執(zhí)行產(chǎn)生的一些數(shù)據(jù),那么要模擬出它們。
●其次。生成在場(chǎng)景切換時(shí)必要保存的對(duì)象。能夠是這樣:
myObject = FindMyObjectInScene(); if (myObjet == null){ ? myObject = SpawnMyObject();}
Unity 使用技巧
關(guān)于美術(shù)
11、把角色和地面物體的中心點(diǎn)(Pivot)放在底部。不要放在中間
這能夠使你方便的把角色或者其它對(duì)象精確的放到地板上。假設(shè)合適的話,它也可能使得游戲邏輯、AI、甚至是物理使用2D邏輯來表現(xiàn)3D。
12、統(tǒng)一全部的模型的面朝向(Z軸正向或者反向)
對(duì)于全部具有面朝向的對(duì)象(比如角色)都應(yīng)該遵守這一條。在統(tǒng)一面朝向的前提下,非常多算法能夠簡(jiǎn)化。
13、在開始就把Scale搞正確
請(qǐng)美術(shù)把全部導(dǎo)入的縮放系數(shù)設(shè)置為1。而且把他們的Transform的Scale設(shè)置為1,1,1。能夠使用一個(gè)參考對(duì)象(一個(gè)Unity的Cube)來做縮放比較。為你的游戲選擇一個(gè)世界的單位系數(shù)。然后堅(jiān)持使用它。
14、為GUI組件或者手動(dòng)創(chuàng)建的粒子制作一個(gè)兩個(gè)面的平面模型
設(shè)置這個(gè)平面面朝向Z軸正向,可能簡(jiǎn)化Billboard和GUI創(chuàng)建。
15、制作并使用測(cè)試資源
●為SkyBox創(chuàng)建帶文字的方形貼圖;
●一個(gè)網(wǎng)格(Grid);
●為Shader測(cè)試使用各種顏色的平面:白色,黑色,50%灰度,紅,綠,藍(lán)。紫,黃。青;
●為Shader測(cè)試使用漸進(jìn)色:黑到白,紅到綠。紅到藍(lán)。綠到藍(lán);
●黑白格子;
●平滑的或者粗糙的法線貼圖;
●一套用來高速搭建場(chǎng)景的燈光(使用Prefa)。
Unity 使用技巧
總結(jié)
游戲開發(fā)是一個(gè)復(fù)雜的過程,需要開發(fā)者掌握許多的技能。以上技巧可以使你的游戲開發(fā)過程更加完善。另外,上述技巧并不詳盡,你需要不斷學(xué)習(xí)。如果你還有其他的Unity開發(fā)技巧,歡迎在留言與大家分享。