Unity自带了一个合并网格的功能,Mesh.CombineMeshes 组合网格
function CombineMeshes (combine : CombineInstance[], mergeSubMeshes : bool = true, useMatrices : bool = true) : void
结合网格有利于性能最优化。如果mergeSubMeshes为true,所有的网格会被结合成一个单个子网格。否则每一个网格都将变成单个不同的子网格。如果所有的网格共享同一种材质,设定它为真。如果useMatrices为false,在CombineInstance结构中的变换矩阵将被忽略。
用这函数我们可以把引用相同材质球的网格进行合并达到减少Draw Call,优化性能的效果。
我的基本思路是:将所有的材质球用字典存(相同的只存一个),将引用相同材质球的网格存一个链表中用材质球的名称作为Key值;
然后遍历字典用Mesh的成员方法CombineMeshes()合并相同;
OK,上代码