public override void OnGUI(Rect rect, SerializedProperty property, GUIContent content) { var enumAllow = attribute as EnumAllowCategoriesAttribute; var enumMask = attribute as EnumMaskAttribute; var type = (enumMask == null || enumMask.Value == null) ? fieldInfo.FieldType : enumMask.Value; string[] names = Editors.GetEnumNames(type, property); if (names != null) { if (enumAllow != null) { var contents = new GUIContent[names.Length]; for (int i = 0; i < names.Length; i++) { contents[i] = new GUIContent(names[i], names[i]); } property.enumValueIndex = EditorGUI.Popup(rect, content, property.enumValueIndex, contents, EditorStyles.popup); } else if (enumMask != null) { property.intValue = EditorGUI.MaskField(rect, content, property.intValue, names); } } }