团结|如何根据Inspector上的主要枚举选择更改枚举

时间:2018-06-20 04:09:46

标签: unity3d enums

好吧,我可以在检查器上设置此枚举,但是我想限制哪个枚举取决于选择的主枚举,以避免使用与所需枚举不同的枚举

public MainSortEnum Sort;
public SecondaryTypeEnum1 Type1;
public SecondaryTypeEnum2 Type2;
public SecondaryTypeEnum3 Type3;

和枚举

public enum MainSortEnum
{
    First,
    Second,
    Thirth,
}
public enum SecondaryTypeEnum1
{
    FirstType,
    SecondType,
    ThirthType,
}
public enum SecondaryTypeEnum2 
{
    FirstType,
    SecondType,
    ThirthType,
}
public enum SecondaryTypeEnum3
{
    FirstType,
    SecondType,
    ThirthType,
}

所以我只想能够在此脚本的检查器上基于MainSortEnum选择所需的枚举,这可能吗?

2 个答案:

答案 0 :(得分:1)

您将需要为这些enums所在的班级创建一个custom inspector

例如,我们将调用此类MyClass

... //other namespaces
using UnityEditor;

[CustomEditor(typeof(MyClass))]
public class MyClassEditor : Editor {
    MyClass myClass;

    void OnEnable() {
        myClass = (MyClass)target;
    }

    public override void OnInspectorGUI() {
        myClass.Sort = EditorGUILayout.EnumPopup("Sort", myClass.Sort);
        if (myClass.Sort == MainSortEnum.First)
            myClass.Type1 = EditorGUILayout.EnumPopup("Type 1", myClass.Type1);
        else if (myClass.Sort == MainSortEnum.Second)
            myClass.Type2 = EditorGUILayout.EnumPopup("Type 2", myClass.Type2);
        else
            myClass.Type3 = EditorGUILayout.EnumPopup("Type 3", myClass.Type3);
    }
}

答案 1 :(得分:0)

最简单的方法是拥有多个GameObjects(在您的情况下为3)并根据用户输入切换gameObject.SetActive(true/false)