1、显示枚举对应的参数
脚本1:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public enum EnumTest
{
None,
EnumValue1,
EnumValue2,
EnumValue3
}
public class TestInspector : MonoBehaviour {
[SerializeField] private EnumTest _enumTemp = EnumTest.None;
[SerializeField] private int _temp1 = 1;
[SerializeField] private int _temp2 = 2;
[SerializeField] private int _temp3 = 3;
}
脚本2:(放在Editor文件夹下)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
//Tip: typeof(脚本名)
[CustomEditor(typeof(TestInspector)),CanEditMultipleObjects]
public class EditorInspector : Editor {
private SerializedProperty enumTemp;
private SerializedProperty temp1;
private SerializedProperty temp2;
private SerializedProperty temp3;
void OnEnable () {
//Tip: serializedObject.FindProperty ("变量名");
enumTemp = serializedObject.FindProperty ("_enumTemp");
temp1 = serializedObject.FindProperty ("_temp1");
temp2 = serializedObject.FindProperty ("_temp2");
temp3 = serializedObject.FindProperty ("_temp3");
}
public override void OnInspectorGUI () {
//Tip: 用来实时更新
serializedObject.Update ();
EditorGUILayout.PropertyField (enumTemp);
switch (enumTemp.enumValueIndex) {
case (int)EnumTest.None:
//Debug.Log("None");
break;
case (int)EnumTest.EnumValue1:
EditorGUILayout.PropertyField (temp1);
break;
case (int)EnumTest.EnumValue2:
EditorGUILayout.PropertyField (temp1);
EditorGUILayout.PropertyField (temp2);
break;
case (int)EnumTest.EnumValue3:
EditorGUILayout.PropertyField (temp1);
EditorGUILayout.PropertyField (temp2);
EditorGUILayout.PropertyField (temp3);
break;
}
//Tip: 应用修改属性
serializedObject.ApplyModifiedProperties ();
}
}