按菜单栏的键,让空物体下的东西都没有,但是都能显示,就是拿网格

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 }

猜你喜欢

转载自www.cnblogs.com/satanj/p/9714140.html