Unity 自定義Inspector面板


自定義Inspector面板,需要幾個要素:

1.CustomEditor,

告訴編輯器類它是編輯器的運行時類型。

當為組件創建自定義編輯器時,您需要將該屬性放在編輯器類上。

讓兩個腳本聯系起來,一個是你要自定義Inspector面板的類CubeTerrain,另一個是他對應的編輯器類CubeTerrainEditor (繼承Editor)

2.重寫OnInspectorGUI,看名字也能知道他是重繪inspector的,API解釋是

實現此功能以制作自定義檢查器。

在這個函數內部,你可以為特定對象類的檢查器添加自己的自定義GUI。

3.target獲得正在檢查的對象,在此腳本中對應的對象就是CubeTerrain,API解釋是

正在檢查的對象。

對於支持多對象編輯的編輯器,不應在OnInspectorGUI內部使用目標屬性,因為它只引用編輯對象中的第一個。

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

//自定義CubeTerrain的Inspector面板
[CustomEditor(typeof(CubeTerrain))]
public class CubeTerrainEditor : Editor {
    CubeTerrain ct;

    /// <summary>
    /// 自定義Inspector
    /// </summary>
    public override void OnInspectorGUI() {
        ct = (CubeTerrain)target;


        //設置界面垂直布局
        GUILayout.BeginVertical();

        //空一行
        GUILayout.Space(0);
        EditorGUILayout.LabelField("Base Info");
        ct.defualtCube = (GameObject)EditorGUILayout.ObjectField("Defualt Cube:", ct.defualtCube, typeof(GameObject), true);
        ct.mapLength = EditorGUILayout.IntField("Map Length:", ct.mapLength);
        ct.mapWidth = EditorGUILayout.IntField("Map Width:", ct.mapLength);
        ct.mapHeight = EditorGUILayout.IntField("Map Height:", ct.mapLength);

        if(GUILayout.Button("Create Map", GUILayout.Width(200))){
            Debug.Log("創建Map");
        }
        if (GUILayout.Button("Add Length Once", GUILayout.Width(200))) {
            Debug.Log("長度加一");
        }
        if (GUILayout.Button("Add Width Once", GUILayout.Width(200))) {
            Debug.Log("寬度加一");
        }
        if (GUILayout.Button("Reduce Length Once", GUILayout.Width(200))) {
            Debug.Log("長度減一");
        }
        if (GUILayout.Button("Reduce Width Once", GUILayout.Width(200))) {
            Debug.Log("寬度減一");
        }

        //垂直布局end
        GUILayout.EndVertical();
        GUILayout.Label("This is a Label in a Custom Editor");
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM