public override void OnInspectorGUI() { serializedObject.Update(); manager = (AttributeManager)target; AttributeManager.Instance = manager; EditorUIState = serializedObject.FindProperty("EditorUIState"); Attributes_Debug = serializedObject.FindProperty("Attributes_Debug"); Attributes = serializedObject.FindProperty("Attributes"); CurrentFilterMask = serializedObject.FindProperty("CurrentFilterMask"); CategoryNames = new ReorderableList(serializedObject, serializedObject.FindProperty("CategoryNames")); CategoryNames.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { var element = CategoryNames.serializedProperty.GetArrayElementAtIndex(index); rect.y += 1f; rect.height -= 2f; element.stringValue = EditorGUI.TextField(rect, element.stringValue); }; CategoryNames.drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, "Filters"); }; CategoryNames.onChangedCallback = FiltersChanged; labelMargin = new GUIStyle(EditorStyles.label); textMargin = new GUIStyle(EditorStyles.textField); buttonMargin = new GUIStyle(GUI.skin.button); miniButton = new GUIStyle(EditorStyles.miniButton); boldFoldOut = new GUIStyle(EditorStyles.foldout); boldMiniButton = new GUIStyle(EditorStyles.miniButton); labelMargin.margin = new RectOffset(AttributeMarginX, 0, 0, 0); textMargin.margin = new RectOffset(AttributeMarginX, 0, 0, 0); buttonMargin.margin = new RectOffset(AttributeMarginX, 0, 0, 0); boldFoldOut.fontStyle = FontStyle.Bold; boldFoldOut.richText = true; boldMiniButton.alignment = TextAnchor.MiddleCenter; boldMiniButton.padding = new RectOffset(0, 2, 0, 2); miniButton.alignment = TextAnchor.MiddleCenter; miniButton.padding = new RectOffset(0, 2, 0, 2); ListIterator(Attributes); serializedObject.ApplyModifiedProperties(); if (GUI.changed) { EditorUtility.SetDirty(manager); } }