將多個skinnedMeshRenderer合並成一個skinnedMeshRenderer,主要涉及的mesh合並、骨骼列表合並、重定向頂點骨骼索引。其中重定向頂點骨骼索引只是通過加偏值即可完成,所以總體來說並無耗時操作。但合並一個由十幾個skinnedMeshRenderer組成,總頂點數不足一萬,總骨骼數150的人物模型,在PC上卻花費一秒多,而在普通安卓手機上花費7秒多。
經過下面一步非常簡單的優化以后,合並同樣的模型在同樣手機上則可瞬間完成。
for(int x=0;x<smrenderer.sharedMesh.boneWeights.Length ;x++)
{ 。。。}
改成
BoneWeight [] boneWs = smrenderer.sharedMesh.boneWeights;
int bl = boneWs.Length;
for(int x=0;x<bl; x++)
{ 。。。}
以及
for(int x=0;x<smrenderer.bones.Length;x++)
{。。。}
改成
int mbl = myBons.Length;
for(int x=0;x<mbl;x++)
{。。。}
第一處改動是主要的。