Unity3D效能最佳化總結

來源:互聯網
上載者:User

一、程式方面
  01、務必刪除指令碼中為空白或不需要的預設方法;
  02、只在一個指令碼中使用OnGUI方法;
  03、避免在OnGUI中對變數、方法進行更新、賦值,輸出變數建議在Update內;
  04、同一指令碼中頻繁使用的變數建議聲明其為全域變數,指令碼之間頻繁調用的變數或方法建議聲明為全域靜態變數或方法;
  05、不要去頻繁擷取組件,將其聲明為全域變數;
  06、數組、集合類元素優先使用Array,其次是List;
  07、指令碼在不使用時指令碼禁用之,需要時再啟用;
  08、可以使用Ray來代替OnMouseXXX類方法;
  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)的情況下才有效果。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.