【发布时间】:2019-10-09 15:29:07
【问题描述】:
假设我们有以下枚举
public enum Section
{
A,
B
}
public enum SectionA
{
A1,
A2,
A3
}
public enum SectionB
{
B1,
B2,
B3
}
我想制作一个包含两个公共枚举字段的脚本,其中可选择值作为 Unity 编辑器的下拉菜单。第一个用于选择 Section(A 或 B),而第二个应该是 SectionA 或 SectionB 类型的枚举,具体取决于第一个字段上的选定值是什么。
我为此编写了以下脚本:
public class Item : MonoBehaviour
{
[HideInInspector]
public Section Section;
[HideInInspector]
public System.Enum Value;
}
[CustomEditor(typeof(Item))]
public class ItemEditor : Editor
{
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
Item item = target as Item;
item.Section = (Section)EditorGUILayout.EnumPopup(item.Section);
switch (item.Section)
{
case Section.A:
item.Value = (SectionA)EditorGUILayout.EnumPopup(item.Value);
break;
case Section.B:
item.Value = (SectionB)EditorGUILayout.EnumPopup(item.Value);
break;
}
}
}
但它会触发一个异常,指出item.Value 为空。
我也试过替换
item.Value = (SectionA)EditorGUILayout.EnumPopup(item.Value);
与
item.Value = (SectionA)EditorGUILayout.EnumPopup(item.Value ?? SectionA.A1);
尝试给它一个“初始值”,但是当我按下播放时,A1 的值会覆盖选定的值。有什么想法吗?
【问题讨论】: