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