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); } } } }