C# 是否可以在Unity中的自定义检查器中显示部分枚举?
是否有办法在检查器中只提供某些枚举值?例如,我有一个充满对象的枚举,如果我选择table,我希望第二个枚举具有特定的对象ID,只显示table1/table2/table3,而不是所有可用的对象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
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]];
}
.
.
.
.