假设我们有以下枚举类型:
public enum Section
{
A,
B
}
public enum SectionA
{
A1,
A2,
A3
}
public enum SectionB
{
B1,
B2,
B3
}
我希望编写一个包含两个公共枚举字段的脚本,可以在Unity编辑器中通过下拉菜单来选择值。第一个字段用于选择部分(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
会覆盖所选的值。有什么想法吗?