地面碰撞体增加材质

    技术2022-07-11  95

    using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;

    public class AddBoxRenderer : EditorWindow {     static private Mesh mesh;     static private Material material;

        [MenuItem("自定义工具/地面碰撞体增加材质", false, 110)]     public static void ShowWindow()     {         EditorWindow window = EditorWindow.GetWindow(typeof(AddBoxRenderer));         window.titleContent = new GUIContent("AddBoxRenderer");     }

        private void OnGUI()     {         if (GUILayout.Button("增加材质"))         {             AddMeshRenderer();         }

            if (GUILayout.Button("移除材质"))         {             RemoveMeshRenderer();         }     }

        static private void AddMeshRenderer()     {         var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);         mesh = cube.GetComponent<MeshFilter>().sharedMesh;         material = cube.GetComponent<MeshRenderer>().sharedMaterial;         if (null == mesh || null == material)             return;         var collider = GameObject.Find("Main/Collider");         if (null != collider)         {             var boxColliders = collider.GetComponentsInChildren<BoxCollider>();             foreach(var block in boxColliders)             {                 var meshFilter = block.GetComponent<MeshFilter>();                 meshFilter.mesh = mesh;                 var meshRenderer = block.GetComponent<MeshRenderer>();                 meshRenderer.material = material;             }         }         GameObject.DestroyImmediate(cube);     }

        static private void RemoveMeshRenderer()     {         var collider = GameObject.Find("Main/Collider");         if (null != collider)         {             var boxColliders = collider.GetComponentsInChildren<BoxCollider>();             foreach (var cube in boxColliders)             {                 var meshFilter = cube.GetComponent<MeshFilter>();                 if (null != meshFilter)                     GameObject.DestroyImmediate(meshFilter);                 var meshRenderer = cube.GetComponent<MeshRenderer>();                 if (null != meshRenderer)                     GameObject.DestroyImmediate(meshRenderer);             }         }     } }  

    Processed: 0.010, SQL: 9