public static void CombineSkinnedMesh(GameObject skeleton, SkinnedMeshRenderer[] skinnedMeshRenderers, bool combine = false, OnCombineCustomizeMaterial customizeMaterialFunc = null) { SkinnedCombinedData data = CollectInfomationFromSkinnedMeshs(skeleton, skinnedMeshRenderers, combine); if (null == data) { return; } SkinnedMeshRenderer smr = skeleton.AddComponent <SkinnedMeshRenderer>(); smr.sharedMesh = new Mesh(); smr.sharedMesh.CombineMeshes(data.combineInstances.ToArray(), combine, false); smr.bones = data.bones.ToArray(); if (combine && null != customizeMaterialFunc) { smr.material = customizeMaterialFunc(data); } else { smr.materials = data.materials.ToArray(); } }
public static void CombineSkinnedMesh(GameObject skeleton, GameObject[] skinnedMeshObjects, bool combine = false, OnCombineCustomizeMaterial customizeMaterialFunc = null) { SkinnedMeshRenderer[] waitCombines = new SkinnedMeshRenderer[skinnedMeshObjects.Length]; for (int i = 0; i < skinnedMeshObjects.Length; i++) { waitCombines[i] = skinnedMeshObjects[i].GetComponentInChildren <SkinnedMeshRenderer>(); } CombineSkinnedMesh(skeleton, waitCombines, combine, customizeMaterialFunc); }