Редактор UnityGUILayout.EnumPopup с генериками

generics unity3d editor

523 просмотра

1 ответ

1 Репутация автора

Привет, у меня небольшая проблема с функционалом. Мне нужна помощь

public static void BuildContentEnum<T>(string label, string toolTip, SerializedProperty property) 
{
    EditorGUILayout.BeginHorizontal();

    property.enumValueIndex = (T)EditorGUILayout.EnumPopup(BuildContentBasic(label, toolTip), (T)Enum.GetValues(typeof(T)).GetValue(property.enumValueIndex));

    EditorGUILayout.EndHorizontal();
}

Ошибка CS1503: Аргумент #2' cannot convertT 'выражение для типа `System.Enum'

Автор: Fran Источник Размещён: 18.07.2016 12:06

Ответы (1)


0 плюса

8552 Репутация автора

Вам не хватает закрывающей скобки.

 (T) EditorGUILayout.EnumPopup(
          BuildContentBasic(label, toolTip), 
          (T)Enum.GetValues(typeof(T)) // here should be an extra parenthesis
          .GetValue(property.enumValueIndex)); // Here you should remove one

По крайней мере, это то, как я понимаю, enumValueIndex является целым числом, но EnumPopup возвращает и enum, что не сработает. Итак, вы хотите получить значение перечисления.

Но я думаю, что есть более простой способ:

int value = property.enumValueIndex;
Автор: Everts Размещён: 18.07.2016 12:17
Вопросы из категории :
32x32