地面碰撞體增加材質

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章