推薦閱讀:
- 我的CSDN
- 我的部落格園
- QQ群:704621321
- 我的個人部落格
Unity遊戲開發小技巧集結,不用謝我,我隻是大自然的搬運工
1. 借助 Prefab 暫存資料
可以直接在腳本的 Inspector 上填寫,然後把整個 GameObject 拖成 Prefab 暫存。
等要用的時候再拖出來。
2. DontDestroy模式
在跨場景的時候保持某些對象一直存在,不必要每次都重新加載,譬如顯示廣告的子產品。
3. 内置函數
Awake,Start,Update,FixedUpdate,LateUpdate 函數,令開發者直接往遊戲循環裡加内容,非常友善快捷。
4. Input
Input.MouseDown 在移動裝置上也通用,對于一些對輸入性能要求不高的操作,直接用它來代替 Input.TouchCount或者 RaycastHit 即可。
5. UGUI
新的 UGUI 支援多種 Camera 渲染,以及 RectTransform 裡Anchor 的靈活配置,功能很強大。
提前設計好的話,可以一套 UI 同時支援 iPhone4/5/6/iPad以及所有 Android 裝置各種尺寸的分辨率。
再也不必做多套 UI 來适應各種裝置了。
6. Editor 腳本
可以友善在編輯器裡擴充,對開發和擺關卡幫助極大。
7. 測試
測試運作時,可以在任意時候暫停遊戲,重新調整數值,遊戲對象的位置等等,然後再繼續遊戲。
8. Editor/Resources 目錄可以存在多個,且可以存放在任意目錄下
寫自己的插件或者代碼庫時可以自帶輔助的資源。
9. Hierachy 層級
在 Hierachy 層級對話框,可以随時輸入搜尋關鍵字,然後一起選中篩選出來的GameObject,這個時候可以同時修改它們的相同屬性。
10. 内置取色器可以暫存顔色
11. 顯示腳本的公用屬性
腳本的公用屬性在 Inspector 中顯示時,可以用額外的修飾符控制其顯示方式,取值範圍等等,非常友善。
12. StreamingAssets 目錄是用來存放不加密的外部檔案
它還有一個極好的用途是存放測試資料。
友善在 PC/MAC/移動裝置上都能調用到同樣的測試資料進行模拟處理。
13. 配合 Alfred 這款快捷啟動的小工具
輸入“us 關鍵字”即可快速調出Unity的 ScriptAPI,你是否也經常忘記 Collier/Trigger 函數的完整寫法?
每次都需要從幫助手冊裡複制代碼段?
14. Unity當機未儲存場景
當你在Unity中編輯場景,突然當機時,可以在項目檔案目錄中找到Temp檔案夾,輕按兩下檔案夾,找到_Backupscenes檔案夾,把字尾為.backup的檔案字尾改為.unity,然後拖進Unity的Project界面裡面,這樣就可以還原當機前場景最後情況。
15. Inspector界面的數值欄自帶加減乘除功能
從Unity5.1開始,可以在Inspector界面中的數值欄進行計算,比如:
你可以在Transform裡面的Position中X欄中加減乘除。
16. 随意移動模型預覽視窗
在Project界面裡面選中模型,在Inspector界面上會顯示模型的預覽視圖,右擊視圖的上的雙橫條,模型預覽視圖就會跳出來,此時就可以像Scene,Game等視窗一樣任意移動,放在你想放的地方,如果想讓他變回去,隻要關掉它即可。
17. 搜尋目前場景中哪些物件運用了指定腳本
在Hierarchy界面中的搜尋欄中輸入你想要搜尋的腳本全名,即可找到哪些物件用了這個腳本,此方法也可以用來搜尋哪些物體上有哪些物件,比如:
Rigidbody等。
18. 在界面上檢視private變量
在Inspector界面右擊Inspector的标簽欄,選擇Debug。
19. 隻讓遊戲運作一幀
先按下暫停鍵,再按運作鍵。
20. 通過Debug.Log擷取執行此語句物件
在腳本的Debug.Log語句中加入gameObject,即Debug.Log(“Test”, gameObject); 腳本運作時點選Console界面中的輸出語句,就能在Hierarchy界面中看到哪個物件執行了這個腳本。
21. 展開所有子節點
按住Alt,用滑鼠點選包含子節點物件前的三角形,在Hierarchy界面和Project界面都可以使用。
22. 編輯時鏡頭跟随選中物件
在Scene界面中選中物件按F,鏡頭就會對準選中物件,并使其在Scene視窗中居中,如果在拖動物件時,要讓鏡頭跟随物件移動,選中物體後按Shift+F即可。
23. 在Scene界面中友善移動編輯鏡頭
在Scene界面中滑鼠右鍵 + A/S/D/W/Q/E來移動鏡頭, 如果想使Game視窗的鏡頭跟Scene一樣,可以在Unity菜單欄中選擇GameObject–>AlignWithView。
24. 在Project界面搜尋商店内容
先在Project界面中的搜尋欄中輸入你想要搜尋内容的關鍵字,然後在搜尋欄下邊的搜尋範圍選擇中選擇AssetStore。
25.區分Unity項目
還在用4.X, 拍案叫絕不敢說, 多開幾個Unity執行個體我不知道各位看官怎麼區分開的倒地是哪個?我們用Unity的C#功能識别路徑把Unity的路徑打到标題欄, 這樣就友善多了
26. 腳本編譯可以不用mono編譯器
而編譯的dll和il都可以在mono上跑。
進而規避老版本編譯器的一些生成問題。
27. shader lab支援自定義對應版本的bytecode
可以用别的shader編譯器來編譯shader。
也是挺靈活的。
28. 橫向移動
做一個橫向移動子產品 裡面有個Update函數 傳入Transform,就把Transform按固定速度橫向移動。
29. 縱向移動
做一個縱向移動子產品 裡面有個Update函數 傳入Transform,就把Transform按重力加速垂直移動。
30. 下次要做一個 斜向固定速度的,就重用 橫向移動子產品
單獨寫一個縱向固定速度移動的子產品。
同樣的角色腳本,推這兩個元件進去,角色就斜着飛了。
31. 把一個子產品清單做成狀态機狀态,加個進入子產品和退出子產品。
加點狀态轉換邏輯,你就有個狀态機了。
32. 可以把Update函數,拿一個協程的iEnumerator代替
進入狀态就啟動協程。
定時的,不用更新,或者其他特殊的狀态都可以輕松搞出來了。
33. 狀态裡面定義個System.Action之類的事件,子產品可以随便抛出這個玩意。
呵呵,這下動畫關鍵幀也有了。
34. 角色
做一個角色的腳本 包含一個子產品清單,把一個橫向和一個縱向子產品推入清單,然後角色每次Update就周遊就執行每個子產品的Update。
35. 快捷目錄
Project視窗下,可以把檔案夾直接拖到Favorites下作為快捷入口,再也不用找一個檔案翻半天了,常用的目錄都可以放在這裡
36. 線框輸出
Game視窗的右上角有個Gizmos按鈕,點選之後可以把你用于Debug畫出來的所有線框都畫到遊戲場景中,其中包含Gizmos類畫出來的所有東西,以及Unity本身提供的碰撞體等等這些需要去Scene視窗看的東西,尤其是沒有雙螢幕的開發者,這個功能太貼心了。
37. 自定義Profiler
利用Profiler.BeginSample()和Profiler.EndSample()函數,可以将任何代碼斷加入Profiler輸出,性能調優的利器,一般來說如果有某個地方你自己對于性能不是很有把握,檢測一下即可知道其使用開銷,用了之後就停不下來了。
38. 反射
如果項目中有一些使用到反射的代碼不太友善修改,而又希望通過設定Stripping Level來降低包體大小和記憶體占用,可以在Assets目錄下添加link.xml檔案來指定涉及到反射的類。
39. 檢視prefab的配置
通過将Editor Setting中的Asset Serialization設定為Force Text可以檢視prefab的配置内容,并通過比對工具進行差異處理和合并。