是否可以在Unity的自定义检查器中显示Partial enum?

问题描述 投票:0回答:1

有没有办法在检查器中只显示某些枚举值?例如,我有一个充满对象的枚举,如果我选择表,我希望第二个枚举有特定的对象id,只显示table1table2table3,而不是所有可用的对象。

public enum Objects
{
    Chair,
    Table,
    Door
}

public enum ObjectIDs
{
    Chair01, 
    Chair02,
    Table01,
    Table02,
    Table03,
    etc..
}
c# unity3d enums
1个回答
1
投票

有一个非常强大的插件可以让这种事情变得非常简单。

https:/odininspector.comattributesshow-if-attribute。


0
投票

你可以修改 此代码 做出你想要的东西。

你需要改变 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 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]];
        }
.
.
.
.

© www.soinside.com 2019 - 2024. All rights reserved.