前言
Unity是一款非常流行的遊戲開發軟體,它的功能令人印象深刻,也能夠適應不同的遊戲開發要求。
Unity不論是對獨立遊戲開發人員或者共同完成某一個項目的的大型團隊而言,它都是一個完美工具。但是由於其複雜性,使得Unity可能難以管理。今天,我們就為遊戲開發者總結出了15條Unity開發建議和技巧,來幫助你更好地使用Unity。
Unity 2020.1 新功能預告
關於流程
1、避免多個Assets
所有的Asset都應該只有一個唯一的版本。如果你真的需要另一個版本的Prefab、Scene或是Mesh,那你要制定一個非常清晰的流程,來確定哪個是正確的版本。錯誤的分支應該起一個特別的名字,例如雙下劃線前綴:__MainScene_Backup。Prefab版本需要一個特別的流程來保證安全 。
2、Unity當機未保存場景
當你在Unity中編輯場景,我們常常出現當機的況狀,可以在項目文件目錄中找到Temp文件夾,雙擊文件夾,找到_Backupscenes文件夾,把後綴為.backup的文件後綴改為.unity,然後拖進Unity的Project介面裡面,這樣就可以還原 當機 前場景最後情況。
3、考慮使用外部的關卡編輯工具
Unity不是一個完美的編輯器。例如,我們使用TuDee來創建3D Tile-Based的遊戲,這使我們可以獲得對Tile友好的工具的益處(網格約束,90度倍數的旋轉,2D視圖,快速Tile選擇等)。從一個XML文件來實例化Prefab也很簡單。
4、考慮把關卡保存為XML,而非scene
這是一種非常奇異的技術:
●它能夠讓你不必每一個場景都設置一遍;
他能夠載入的更快(假設大多數對象都是在場景之間共享的)。
●它讓場景的版本號合併變的簡單(就算是Unity的新的文本格式的Scene,也因為數據太多,而讓版本號合併變的不切實際)。
●它能夠使得在關卡之間保持數據更簡便。
5、考慮編寫通用的自己定義Inspector代碼
實現自己定義的Inspector是非常直截了當的。可是Unity的系統有非常多的缺點:
●它不支持從繼承中獲益;
●它不同意定義欄位級別的Inspector組件,而僅僅能是class類型級別。
關於場景組織
6、使用命名的空Game Object來做場景文件夾
細緻的組織場景,就能夠方便的找到不論什麼對象。
7、把控制對象和場景文件夾(空Game Objec)放在原點(0,0。0)
假設位置對於這個對象不重要。那麼就把他放到原點。這樣你就不會遇到處理Local Space和World Space的麻煩,代碼也會更簡潔。
8、儘量降低使用GUI組件的offset
通常應該由控制項的Layout父對象來控制Offset;它們不應該依賴它們的爺爺節點的位置。位移不應該互相抵消來達到正確顯示的目的。
基本上要防止了下列情況的發生:
父容器被放到了(100,-50),而字節點應該在(10,10)。所以把他放到(90。60)[父節點的相對位置]。
這樣的錯誤通常發生在容器不可見時。
9、把世界的地面放在Y=0
這樣能夠更方便的把對象放到地面上。而且在遊戲邏輯中。能夠把世界作為2D空間來處理(假設合適的話),比如AI和物理模擬。
10、使遊戲能夠從每一個Scene啟動
這將大大的減少測試的時間。為了達到全部場景可執行,你須要做兩件事:
●首先,假設須要前面場景執行產生的一些數據,那麼要模擬出它們。
●其次。生成在場景切換時必要保存的對象。能夠是這樣:
關於美術
11、把角色和地面物體的中心點(Pivot)放在底部。不要放在中間
這能夠使你方便的把角色或者其它對象精確的放到地板上。假設合適的話,它也可能使得遊戲邏輯、AI、甚至是物理使用2D邏輯來表現3D。
12、統一全部的模型的面朝向(Z軸正向或者反向)
對於全部具有面朝向的對象(比如角色)都應該遵守這一條。在統一面朝向的前提下,非常多算法能夠簡化。
13、在開始就把尺寸搞正確
請美術把全部導入的縮放係數設置為1。而且把他們的Transform的Scale設置為1,1,1。能夠使用一個參考對象(一個Unity的Cube)來做縮放比較。為你的遊戲選擇一個世界的單位係數。
14、為GUI組件或者手動創建的粒子製作一個兩個面的平面模型
設置這個平面面朝向Z軸正向,可能簡化Billboard和GUI創建。
15、製作並使用測試資源
●將SkyBox至作為方形貼圖;
●一個網格(Grid);
●為Shader測試使用各種顏色的平面:白色,黑色,50%灰度,紅,綠,藍。紫,黃。青;
●為Shader測試使用漸層色:黑到白,紅到綠。紅到藍。綠到藍;
●黑白格子;
●平滑的或者粗糙的法線貼圖;
●一套用來高速搭建場景的燈光(使用Prefa)。
總結
遊戲開發是一個複雜的過程,需要開發者掌握許多的技能。以上技巧可以使你的遊戲開發過程更加完善。另外,上述技巧並不詳盡,在Unity的路上我們都需要不斷學習。