Unity编辑器扩展——继承Editor类去自定义Inspector面板

一:Editor类

Editor类继承自ScriptableObject类,Editor类中定义了一个重写方法OnInspectorGUI,我们使用重写OnInspectorGUI方法去自定义Inspector面板


二:案例

例如一个正常继承MonoBehaviour的脚本Test,定义了一个float类型的公有变量move_speed和一个float类型的公有变量rotation_speed,以及一个bool类型的isMove

如上图所示,Inspector面板中显示定义的三个参数,但是这样赋值时容易产生混淆,所以现在我们有这样一个需求,当isMove勾选上则面板上显示move_speed变量,当isMove未勾选上则面板上显示rotation_speed变量

新建一个脚本(一般命名为需要被扩展的脚本名+Editor,例如Test脚本的Inspector扩展类命名为TestEditor),脚本需要继承自Editor,我们知道自定义的Window窗口需要在OnGUI中绘制,而自定义的Inspector面板需要在OnInspectorGUI中绘制

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(Test))]
public class TestEditor : Editor
{
    public override void OnInspectorGUI()
    {
        Test t = (Test)target;

        t.isMove = EditorGUILayout.Toggle("是否为移动", t.isMove);
        if (t.isMove)
        {
            EditorGUILayout.FloatField("移动速度", t.move_speed);
        }
        else
        {
            EditorGUILayout.FloatField("旋转速度", t.rotation_speed);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/LLLLL__/article/details/106433837