2016-07-18 10 views
0

Hallo Ich habe ein kleines Problem mit einer Funktion. Ich brauche HilfeEditor Editor EditorGUILayout.EnumPopup mit Generika

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(); 

    } 

Fehler CS1503: Argument #2' cannot convert T

+0

'EditorGUILayout.EnumPopup' gibt' Enum' so nicht mit einer generischen/Vorlage verwenden kann 'T', schätze ich. Verwenden Sie etwas wie folgt: http://stackoverflow.com/questions/79126/create-generic-method-constraining-t-to-an-enum –

Antwort

0

Sie vermissen eine schließende Klammer 'Ausdruck `System.Enum zu geben'.

(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 

Mindestens das ist, wie ich es verstehe, enumValueIndex ist eine ganze Zahl, aber EnumPopup kehrt und Enum, das geht nicht. Sie möchten also den Wert des Enums erhalten.

Aber ich würde denken, es ist ein einfacher Weg:

int value = property.enumValueIndex;