public static void SomethingSomething<T>( T input ) where T: class {
var zz = UnityEditor.EditorGUILayout.EnumPopup( input as System.Enum ) as T;
}
Вот такое как минимум компилится. Но это не очень красивое решение, теоретически оно может сожрать любой класс, и отдать таким образом null внутрь .EnumPopup()ß