Unity效能最佳化小抄

洪流學堂,讓你快人幾步。你好,我是大智。

遇到卡頓效能問題,可以從以下幾個方面依次檢查最佳化。

SetPass Call太高

Draw Call造成的效能問題大部分出在SetPass Call上面。

可以從以下幾個方面入手。

減小相機的視距(增加霧效消除斷層的感覺)

開啟材質的GPU Instancing(需要GPU支援,如果想最佳化到極致,可以程式碼呼叫DrawMeshInstanced 批次繪製或使用外掛:GPU Instancer)

開啟Static Batching(不適用於大量重複的物體,會大幅增加硬碟及記憶體佔用)

開啟Dynamic Batching(僅適用於頂點小於900的物體,同時會消耗更多CPU,比較雞肋)

以上三個生效順序:Static Batching > GPU Instancing > Dynamic Batching

遮擋剔除Oculusion Culling(場景遮擋很少的情況不適用)

合併材質和Mesh(合併貼圖到一張圖集,最好是美術同學最佳化,Unity外掛:Simplygon、MeshBaker、Poly Few,也可以使用各個建模軟體中的工具,比如Blender中的BakeTool)

按需製作LOD(自動生成LOD外掛:Poly Few、Mantis LOD Editor、Ultimate LOD System MT)

如果有地形記得開啟地形設定中的Draw Instanced,如果地形太大記得拆分開(外掛:Terrain Slicing & Dynamic Loading Kit),也可以替換內建地形shader解鎖更高效能(外掛:Relief Terrain Pack v3。3)

Batches太高

Batches資料和常說的Draw Call資料比較接近。

合併Mesh(合併Mesh的時候注意僅合併相近的物體,否則可能會起反作用,導致其他效能問題。外掛:Simplygon、MeshBaker、Poly Few)

CPU太高

CPU太高很大一部分問題是上述的渲染造成的,如果上述都最佳化完畢後,可以檢查程式碼問題。

程式碼問題(使用Profiler定位後,自行修改程式碼,計算量大的可以隔幀計算)

記憶體佔用太高

模型減面(外掛:Poly Few、Simplygon,極端情況還可以用Imposter(Simplygon、Amplify Imposter))

貼圖壓縮(可以在Unity的貼圖匯入中設定)

音訊壓縮(設定為單聲道)

檢查程式碼中佔用大量記憶體的問題

GPU太高

模型減面(每個模型頂點都要透過頂點著色器處理)(外掛:Poly Few、Simpolygon,極端情況還可以用Imposter(Simpolygon、Amplify Imposter))

減小輸出解析度(每個螢幕輸出畫素都要透過片元著色器處理)

減少Shader複雜度

本文將持續更新,最新版請在

洪流學堂

公眾號中回覆獲取。

本文僅是非常簡略小抄,後續公眾號中會更新效能最佳化的各種方法、原理、工具等教程。

你那有什麼效能最佳化小技巧?歡迎留言分享給大家。

截至8月18日中午12點留言點贊最高的第1、5、9名共3名同學,我們將送出Unity周邊盲盒。

TAG: 外掛GPUPolyfew太高