Можно ли отобразить частичное перечисление в пользовательском инспекторе в Unity? - PullRequest
2 голосов
/ 26 мая 2020

Есть ли способ, чтобы в инспекторе были доступны только определенные значения перечисления? Например, у меня есть перечисление, полное объектов, и если я выберу таблицу, я хочу, чтобы второе перечисление с определенными c идентификаторами объектов отображало только table1 / table2 / table3 вместо всех доступных объектов.

public enum Objects
{
    Chair,
    Table,
    Door
}

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

Ответы [ 2 ]

1 голос
/ 26 мая 2020

Существует очень надежный плагин, который упрощает такие вещи.

https://odininspector.com/attributes/show-if-attribute

0 голосов
/ 26 мая 2020

вы можете изменить этот код , чтобы сделать то, что вы хотите.

Вам нужно изменить класс EnumOrderDrawer, чтобы циклы не go для всех 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]];
        }
.
.
.
.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...