1.生产面板上组件的方法,就是菜单,
2.合并网格
1 // 2018/09/27 16:57:44 2 using System.Collections; 3 using System.Collections.Generic; 4 using UnityEngine; 5 using UnityEditor; 6 7 public class ConmbinMeshText : MonoBehaviour 8 { 9 10 [MenuItem("Toos/Combin")] 11 static void CombineMesh() 12 { 13 14 GameObject obj = Selection.activeGameObject; 15 if (obj == null) 16 { 17 print("空的"); 18 return; 19 } 20 MeshRenderer[] mesr = obj.transform.GetComponentsInChildren<MeshRenderer>();//拿到所有子物体的meshRender 21 Material[] mas = new Material[mesr.Length];//用于存储材质 22 for (int i = 0; i < obj.transform.GetChildCount(); i++) 23 { 24 mas[i] = mesr[i].material;//转换过来 25 } 26 MeshFilter[] mesf = obj.transform.GetComponentsInChildren<MeshFilter>();//拿到所有子物体的meshFilter 27 CombineInstance[] com = new CombineInstance[mesf.Length]; 28 for (int i = 0; i < com.Length; i++) 29 { 30 com[i].mesh = mesf[i].mesh; 31 com[i].transform = mesf[i].transform.worldToLocalMatrix;//材质本地坐标转换 32 } 33 Mesh mesh = new Mesh(); 34 mesh.CombineMeshes(com); 35 MeshFilter mf = obj.AddComponent<MeshFilter>(); 36 mf.mesh = mesh;//网格合并后赋值 37 MeshRenderer render = obj.AddComponent<MeshRenderer>(); 38 render.materials = mas;//材质进行赋值 39 } 40 41 }