網格合併優化

2021-10-06 03:59:46 字數 2067 閱讀 9768

合併網格之後發現用來合併的網格在場景中也占用乙份記憶體,也就是說一共占用了兩份記憶體。

**如下

private void combinemesh(listmeshfilters)

m_terrainmeshcombine = new gameobject("terrainmeshcombine");

m_combinemesh = new mesh();

m_terrainmeshcombine.transform.setparent(transform);

m_terrainmeshcombine.addcomponent().sharedmaterial = terrainmeshmat;

m_terrainmeshcombine.addcomponent().sharedmesh = m_combinemesh;

m_terrainmeshcombine.getcomponent().sharedmesh.combinemeshes(combine);

m_terrainmeshcombine.getcomponent().sharedmesh.recalculatebounds();

m_terrainmeshcombine.getcomponent().sharedmesh.recalculatetangents();

m_terrainmeshcombine.getcomponent().sharedmesh.recalculatenormals(60);//過載的乙個方法

m_terrainmeshcombine.getcomponent().sharedmesh.markdynamic();

m_terrainmeshcombine.getcomponent().sharedmesh.uploadmeshdata(false);

}

記憶體使用情況如下

從profiler中看到合併的網格和未合併的小網格各占用乙份記憶體,如果使用合併後的網格那麼小網格其實是可以刪掉的。

修改後如下

private void combinemesh(listmeshfilters)

m_terrainmeshcombine = new gameobject("terrainmeshcombine");

m_combinemesh = new mesh();

m_terrainmeshcombine.transform.setparent(transform);

m_terrainmeshcombine.addcomponent().sharedmaterial = terrainmeshmat;

m_terrainmeshcombine.addcomponent().sharedmesh = m_combinemesh;

m_terrainmeshcombine.getcomponent().sharedmesh.combinemeshes(combine);

m_terrainmeshcombine.getcomponent().sharedmesh.recalculatebounds();

m_terrainmeshcombine.getcomponent().sharedmesh.recalculatetangents();

m_terrainmeshcombine.getcomponent().sharedmesh.recalculatenormals(60);

m_terrainmeshcombine.getcomponent().sharedmesh.markdynamic();

m_terrainmeshcombine.getcomponent().sharedmesh.uploadmeshdata(false);

for (int i = 0; i < meshfilters.count; i++)

combine = null;

}

記憶體使用情況如下

從記憶體使用情況來看也減少了記憶體開銷。

合併Mesh網格

1 對於具有相同材質的物件,可以通過把他們的mesh網格 mesh filter 合併在一起,然後禁用被合併的物件,來達到減少drawcall的效果 void start transform.getcomponent mesh new mesh transform.getcomponent mesh...

Unity換裝之合併網格

為了提高遊戲效能,需要對人物進行換裝後,講人物各個部分再進行組合,形成乙個整體的網格,所以需要合併網格,骨骼,材質等。下面是從resources中載入人物各個部分,然後再組裝。首先載入的骨骼,再載入其他部分。void loadresource void addpart string partname...

UI優化策略 網格重建

原文 基於以上ugui的網格更新原理,我們可以做以下優化 1 使用盡可能少的ui元素 在製作ui時,一定要仔細查檢ui層級,刪除不必要的ui元素,這樣可以減少深度排序的時間以及rebuild的時間。2 減少rebuild的頻率 將動態ui元素 頻繁改變例如頂點 alpha 座標和大小等的元素 與靜態...