Допустим, у нас есть следующие Enums
public enum Section
{
A,
B
}
public enum SectionA
{
A1,
A2,
A3
}
public enum SectionB
{
B1,
B2,
B3
}
Я хотел бы создать скрипт с двумя открытыми полями Enum, с выбираемыми значениями в качестве выпадающих списков из Unity Editor. Первый служит для выбора раздела (A или B), а второй должен быть Enum типа 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
переопределяет выбранное. когда я нажимаю Play. Есть идеи?