Unity3D 效能優化

2021-07-12 04:31:41 字數 1918 閱讀 3095

unity3d 效能優化

一、程式方面

01、務必刪除指令碼中為空或不需要的預設方法;

02、只在乙個指令碼中使用ongui方法;

03、避免在ongui中對變數、方法進行更新、賦值,輸出變數建議在update內;

04、同一指令碼中頻繁使用的變數建議宣告其為全域性變數,指令碼之間頻繁呼叫的變數或方法建議宣告為全域性靜態變數或方法;

05、不要去頻繁獲取元件,將其宣告為全域性變數;

06、陣列、集合類元素優先使用array,其次是list;

07、指令碼在不使用時指令碼禁用之,需要時再啟用;

08、可以使用ray來代替onmou***xx類方法;

09、需要隱藏/顯示或例項化來回切換的物件,盡量不要使用setactiverecursively或active,而使用將物件遠遠移出相機範圍和移回原位的做法;

10、盡量少用模運算和除法運算,比如a/5f,一定要寫成a*0.2f。

11、對於不經常呼叫或更改的變數或方法建議使用coroutines & yield;

12、盡量直接宣告指令碼變數,而不使用getcomponent來獲取指令碼;

iphone

13、盡量使用整數數字,因為iphone的浮點數計算能力很差;

14、不要使用原生的gui方法;

15、不要例項化(instantiate)物件,事先建好物件池,並使用translate「生成」物件;

二、模型方面

01、合併使用同貼圖的材質球,合併使用相同材質球的mesh;

02、角色的貼圖和材質球只要乙個,若必須多個則將模型離分離為多個部分;

02、骨骼系統不要使用太多;

03、當使用多角色時,將動畫單獨分離出來;

04、使用層距離來控制模型的顯示距離;

05、陰影其實包含兩方面陰暗和影子,建議使用實時影子時把陰暗效果烘焙出來,不要使用燈光來調節光線陰暗。

06、少用畫素燈和使用畫素燈的shader;

08、如果硬陰影可以解決問題就不要用軟陰影,並且使用不影響效果的低解析度陰影;

08、實時陰影很耗效能,盡量減小產生陰影的距離;

09、允許的話在大場景中使用線性霧,這樣可以使遠距離物件或陰影不易察覺,因此可以通過減小相機和陰影距離來提高效能;

10、使用圓滑組來儘量減少模型的面數;

11、專案中如果沒有燈光或物件在移動那麼就不要使用實時燈光;

12、水面、鏡子等實時反射/折射的效果單獨放在water圖層中,並且根據其實時反射/折射的範圍來調整;

13、碰撞對效率的影響很小,但碰撞還是建議使用box、sphere碰撞體;

14、建材質球時盡量考慮使用substance;

15、盡量將所有的實時反射/折射(如水面、鏡子、地板等等)都集合成乙個面;

16、假反射/折射沒有必要使用過大解析度,一般64*64就可以,不建議超過256*256;

17、需要更改的材質球,建議例項化乙個,而不是使用公共的材質球;

18、將不須射線或碰撞事件的物件置於ignoreraycast圖層;

19、將水面或類似效果置於water圖層

20、將透明通道的物件置於transparentfx圖層;

21、養成良好的標籤(tags)、層次(hieratchy)和圖層(layer)的條理化習慣,將不同的物件置於不同的標籤或圖層,三者有效的結合將很方便的按名稱、類別和屬性來查詢;

22、通過stats和profile檢視對效率影響最大的方面或物件,或者使用禁用部分模型的方式檢視問題到底在哪兒;

23、使用遮擋剔除(occlusion culling)處理大場景,一種較原生的類lod技術,並且能夠「分割」作為整體的乙個模型。

三、其它

場景中如果沒有使用燈光和畫素燈,就不要使用法線貼圖,因為法線效果只有在有光源(direct light/point light/angle light/pixel light)的情況下才有效果。

Unity3D效能優化總結

一 程式方面 01 務必刪除指令碼中為空或不需要的預設方法 02 只在乙個指令碼中使用ongui方法 03 避免在ongui中對變數 方法進行更新 賦值,輸出變數建議在update內 04 同一指令碼中頻繁使用的變數建議宣告其為全域性變數,指令碼之間頻繁呼叫的變數或方法建議宣告為全域性靜態變數或方法...

Unity 3D 效能優化總結

記憶體優化篇 cpu優化篇 unity中的優化技術 unity 3d ugui效能優化 unity 3d 優化記憶體 unity 3d mipmap unity 3d lod unity 3d 遊戲開發紋理壓縮方案 其他 效能優化 不要去頻繁getcomponent,獲取一次以後快取起來 優先使用a...

Unity3D 效能優化之Draw Call

unity 或者說基本所有圖形引擎 生成一幀畫面的處理過程大致可以這樣簡化描述 引擎首先經過簡單的可見性測試,確定攝像機可以看到的物體,然後把這些物體的頂點 包括本地位置 法線 uv等 索引 頂點如何組成三角形 變換 就是物體的位置 旋轉 縮放 以及攝像機位置等 相關光源,紋理,渲染方式 由材質 s...