Ejemplo n.º 1
0
    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();
        }
    }
Ejemplo n.º 2
0
 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);
 }