Unity手游開發優化要點

Unity手游開發優化要點

來自專欄白話unity遊戲開發技術5 人贊了文章

腳本方面

1、不需要高頻率調用的函數,使用InvokeRepeating(或Time.frameCount%n)代替Update

2、SetParent、Instantiate、Find、IO操作、SetActive、GetComponent等耗時較長的介面應在loading的時候做

3、Update盡量減少代碼邏輯、減少臨時變數、減少對其他函數的調用

4、Dictionary使用TryGet代替ContainsKey

5、用移出屏幕(例如一些UI控制項)代替SetActive(false)

6、Transform的子類型過多時避免頻繁地進行Transform操作,大量的子物體會帶來大量的操作

7、自己用來查錯的Log列印盡量不要上傳SVN

9、空的Update應該刪掉

10、盡量減少物理組件的使用

11、用stringbuilder代替string,減少gc

12、用for代替foreach

13、使用對象池

14、盡量使用非同步資源載入方式,減少卡頓

15、盡量減少函數中的臨時對象的創建,儘可能的把這些對象轉化為類的成員,較少gc

16、盡量減少裝箱拆箱操作,包括使用裝箱拆箱操作的容器,例如ArrayList,HashTable,減少gc

17、在不影響遊戲體驗的時候(例如loading、設置界面)主動通過System.GC.Collect()調用垃圾回收

設定方面

1、減少drawcall,設置靜態批次,將場景中不移動的的地圖元素勾選 static選項

2、減少光照,尤其是點光源,降低像素級光源數量,最好不要使用動態光源

3、降低陰影質量及產生陰影距離

5、使用lightmap

6、shader盡量設定為 Mobile下的,這些shader在手機上表現更好

7、關閉紋理資源的「Read & Write」功能

美術方面

1、使用LOD(Level of Detail)

2、合併網格,減少calldraw,盡量少於200

3、剔除場景模型中看不到的面

4、優化模型,做到同屏面數少於10w

5、當某特效有非常多的可能重疊的透明粒子,且有可能近距離觀察這個特效的時候(例如近距離觀察一個龍捲風特效),可能會造成渲染用時過多,遊戲就會比較卡,因為渲染的時候疊加的透明面片會讓渲染次數提高很多,可以使用透明的模型代替特效

6、半透明物體開銷比較大,盡量不要使用


推薦閱讀:

統一多線程(C#)
談談《戀與製作人》
想做遊戲開發,需要學會什麼?

TAG:unity | 優化 | 手機遊戲開發 |