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、半透明物體開銷比較大,盡量不要使用
推薦閱讀: