優化分為兩大類:
渲染優化(GPU):
GPU優化蛀牙是針對DrawCall這個參數,這個參數具體是什麼可以自行百度,這裡不做過多解釋。
舉個最簡單的例子,複制一個1G的檔案到另一個位置,與複制1024個1M的檔案到另一個位置,肯定是複制1G的快。
是以DrawCall也是一樣,每次調用DrawCall都可以了解為有準備工作與善後工作,我們需要做的就是講能合并的DrawCall合并,減少準備工作與善後工作的次數。
1:層級細節LOD技術
即不同距離下渲染的物體不一樣,例如近距離就渲染高精度的模型,距離遠了之後渲染低精度的模型。
主要用到的元件是LOD Group。
三個層級分别添加不同的模型。
2:遮擋剔除
将需要渲染的遊戲物體改為
在window=》Occlusion中将參數設定如下
Bake之後選中camera,即可實作優化,即隻渲染在目标視野中的物體。
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優化:
對象池的應用等