Unity客户端开发优化要点
腳本方面
1、不需要高頻率調(diào)用的函數(shù),使用InvokeRepeating(或Time.frameCount%n)代替Update
2、SetParent、Instantiate、Find、IO操作、SetActive、GetComponent等耗時(shí)較長的接口應(yīng)在loading的時(shí)候做
3、Update盡量減少代碼邏輯、減少臨時(shí)變量、減少對其他函數(shù)的調(diào)用
4、Dictionary使用TryGet代替ContainsKey
5、用移出屏幕(例如一些UI控件)代替SetActive(false)
6、Transform的子類型過多時(shí)避免頻繁地進(jìn)行Transform操作,大量的子物體會(huì)帶來大量的操作
7、自己用來查錯(cuò)的Log打印盡量不要上傳SVN
9、空的Update應(yīng)該刪掉
10、盡量減少物理組件的使用
11、用stringbuilder代替string,減少gc
12、用for循環(huán)代替foreach
13、使用對象池
14、盡量使用異步資源加載方式,減少卡頓
15、盡量減少函數(shù)中的臨時(shí)對象的創(chuàng)建,盡可能的把這些對象轉(zhuǎn)化為類的成員,較少gc
16、盡量減少裝箱拆箱操作,包括使用裝箱拆箱操作的容器,例如ArrayList ,Hashtable,減少gc
17、在不影響游戲體驗(yàn)的時(shí)候(例如Loading、設(shè)置界面)主動(dòng)通過System.GC.Collect()調(diào)用垃圾回收
設(shè)定方面
1、減少drawcall,設(shè)置靜態(tài)批次,將場景中不移動(dòng)的的地圖元素勾選 static選項(xiàng)
2、減少光照,尤其是點(diǎn)光源,降低像素級光源數(shù)量,最好不要使用動(dòng)態(tài)光源
3、降低陰影質(zhì)量及產(chǎn)生陰影距離
5、使用lightmap
6、shader盡量設(shè)定為 Mobile下的,這些shader在手機(jī)上表現(xiàn)更好
7、關(guān)閉紋理資源的“Read & Write”功能
美術(shù)方面
1、使用LOD(Level of Detail)
2、合并網(wǎng)格,減少calldraw,盡量少于200
3、剔除場景模型中看不到的面
4、優(yōu)化模型,做到同屏面數(shù)少于10w
5、當(dāng)某特效有非常多的可能重疊的透明粒子,且有可能近距離觀察這個(gè)特效的時(shí)候(例如近距離觀察一個(gè)龍卷風(fēng)特效),可能會(huì)造成渲染用時(shí)過多,游戲就會(huì)比較卡,因?yàn)殇秩镜臅r(shí)候疊加的透明面片會(huì)讓渲染次數(shù)提高很多,可以使用透明的模型代替特效
6、半透明物體開銷比較大,盡量不要使用
總結(jié)
以上是生活随笔為你收集整理的Unity客户端开发优化要点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据的存储特殊矩阵压缩存储【数据结构F】
- 下一篇: leetcode253. 会议室 II