C# 是否可以在Unity中的自定义检查器中显示部分枚举?

C# 是否可以在Unity中的自定义检查器中显示部分枚举?,c#,unity3d,enums,C#,Unity3d,Enums,是否有办法在检查器中只提供某些枚举值?例如,我有一个充满对象的枚举,如果我选择table,我希望第二个枚举具有特定的对象ID,只显示table1/table2/table3,而不是所有可用的对象 public enum Objects { Chair, Table, Door } public enum ObjectIDs { Chair01, Chair02, Table01, Table02, Table03, et

是否有办法在检查器中只提供某些枚举值?例如,我有一个充满对象的枚举,如果我选择table,我希望第二个枚举具有特定的对象ID,只显示table1/table2/table3,而不是所有可用的对象

public enum Objects
{
    Chair,
    Table,
    Door
}

public enum ObjectIDs
{
    Chair01, 
    Chair02,
    Table01,
    Table02,
    Table03,
    etc..
}

有一个非常健壮的插件,使这类事情变得非常简单

您可以修改以生成所需内容

您需要更改
EnumOrderDrawer
类,以使循环不适用于所有
enum
变量

例如,更改代码

public const string TypeOrder = "10,1,5,2";
public enum Type 
    {
        One = 10,
        Two = 1,
        Three = 5,
        Four = 2,
    }

    [EnumOrder(TypeOrder)]
    public Type type3;
.
.
.
.
for (int i=0; i<property.enumNames.Length; i++) 
        {
             items[i] = property.enumNames[indexArray[i]];
        }
public const string TypeOrder=“10,1,5,2”;
公共枚举类型
{
1=10,
二等于一,
三等于五,
四等于二,
}
[EnumOrder(TypeOrder)]
公共类型3;
.
.
.
.

对于(int i=0;i)您可以使用
Enum.GetNames
接收
objectid
名称的整个列表,而不是使用所选
对象的名称进行筛选,而不是使用
Enum.GetValue
传递每个筛选的名称
public const int[] TypeOrder = new int[] { 10, 1, 5, 2 };
public enum Type 
    {
        One = 10,
        Two = 1,
        Three = 5,
        Four = 2,
    }

    [EnumOrder(TypeOrder)]
    public Type type3;
.
.
.
.
for (int i=0; i<TypeOrder.Length; i++) 
        {
             items[i] = property.enumNames[indexArray[i]];
        }
.
.
.
.