天天看點

unity性能優化攻略

優化分為兩大類:

渲染優化(GPU):

GPU優化蛀牙是針對DrawCall這個參數,這個參數具體是什麼可以自行百度,這裡不做過多解釋。

舉個最簡單的例子,複制一個1G的檔案到另一個位置,與複制1024個1M的檔案到另一個位置,肯定是複制1G的快。

是以DrawCall也是一樣,每次調用DrawCall都可以了解為有準備工作與善後工作,我們需要做的就是講能合并的DrawCall合并,減少準備工作與善後工作的次數。

1:層級細節LOD技術

即不同距離下渲染的物體不一樣,例如近距離就渲染高精度的模型,距離遠了之後渲染低精度的模型。

主要用到的元件是LOD Group。

unity性能優化攻略

三個層級分别添加不同的模型。

2:遮擋剔除

将需要渲染的遊戲物體改為

unity性能優化攻略

在window=》Occlusion中将參數設定如下

unity性能優化攻略

Bake之後選中camera,即可實作優化,即隻渲染在目标視野中的物體。

unity性能優化攻略

3:光照貼圖合并

具體可以參考我的這一篇文章。

燈光與渲染

4:Mesh合并

所有物體都是三點一個片面搭建出來的,最終會由MeshRender繪制出來,但是數量過多會增多DrawCall的數量,是以我們可以對Mesh進行合并,然後統一交給Mesh去渲染。

void MeshCombine()
    {
        MeshFilter[] filters = GetComponentsInChildren<MeshFilter>();

        CombineInstance[] combiners = new CombineInstance[filters.Length];

        for(int i = 0; i < filters.Length; i++)
        {
            combiners[i].mesh = filters[i].sharedMesh;
            combiners[i].transform = filters[i].transform.localToWorldMatrix;
        }

        Mesh finalMesh = new Mesh();
        finalMesh.CombineMeshes(combiners);

        GetComponent<MeshFilter>().sharedMesh = finalMesh;
    }
           

CPU優化:

對象池的應用等

繼續閱讀