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