预览图:
写一个 Enum 普通脚本 不要放到Eidtor文件夹内 否则找不到此脚本
using UnityEngine;
public enum format
{
数字,
字符串,
图片
}
public class Drop2 : MonoBehaviour
{
public format Enum_type;
public int number;
public string str;
public Sprite sprite;
}
重点
写 UnityEditor 脚本 这个需要放到Eidtor文件夹内
这个地方一定记住要关联自己的脚本 否则寻找不到变量
using UnityEngine;
using UnityEditor;
[CustomEditor(typeof(Drop2))]//关联之前的脚本
public class EnumVar : Editor
{
private SerializedObject test;//序列化
private SerializedProperty Enum_type, number, str, sprite;//定义类型
void OnEnable()
{
test = new SerializedObject(target);
//找到指定的变量 以及 Enum
Enum_type = test.FindProperty("Enum_type");
number = test.FindProperty("number");
str = test.FindProperty("str");
sprite = test.FindProperty("sprite");
}
public override void OnInspectorGUI()
{
test.Update();//更新test
EditorGUILayout.PropertyField(Enum_type);
if (Enum_type.enumValueIndex == 0)
{//当选择第一个枚举类型
EditorGUILayout.PropertyField(number);
}
else if (Enum_type.enumValueIndex == 1)
{
EditorGUILayout.PropertyField(str);
}
else if (Enum_type.enumValueIndex == 2)
{
EditorGUILayout.PropertyField(sprite);
}
//serializedObject.ApplyModifiedProperties();
test.ApplyModifiedProperties();//应用
}
}