/// <summary> /// /// </summary> static bl_HierarchyEditor() { m_Data = Resources.Load("HierarchyData", typeof(bl_HierarchyData)) as bl_HierarchyData; EditorApplication.hierarchyWindowItemOnGUI += DrawHierarchy; EditorApplication.projectWindowChanged += UpdateObjects; EditorApplication.hierarchyWindowChanged += UpdateObjects; EditorApplication.playmodeStateChanged += UpdateObjects; }
void OnEnable() { m_Data = Resources.Load("HierarchyData", typeof(bl_HierarchyData)) as bl_HierarchyData; if (m_Data != null) { DataSerialized = new SerializedObject(m_Data); TagList = new ReorderableList(DataSerialized, DataSerialized.FindProperty("m_HierarchyTagsIcons"), true, true, false, false); TagList.drawHeaderCallback = OnDrawHeader; TagList.drawElementCallback = OnDrawElement; } }
/// <summary> /// /// </summary> private static void UpdateObjects() { if (m_Data == null) { m_Data = Resources.Load("HierarchyData", typeof(bl_HierarchyData)) as bl_HierarchyData; } //This is for performance due this is called up to 4 times in each draw frame and we don't that // refresh tag list m_Data.RefreshTags(); //get all objects in hierarchy (active objects). GameObject[] go = Object.FindObjectsOfType(typeof(GameObject)) as GameObject[]; for (int i = 0; i < go.Length; i++) { m_Data.RegisterObject(go[i]); } }
public override void OnInspectorGUI() { bl_HierarchyData hd = (bl_HierarchyData)target; serializedObject.Update(); TagList.DoLayoutList(); serializedObject.ApplyModifiedProperties(); GUILayout.BeginVertical("box"); GUILayout.Label("Settings", EditorStyles.boldLabel); hd.ShowIcons = EditorGUILayout.ToggleLeft("Show Icons", hd.ShowIcons, EditorStyles.toolbarButton); hd.HorizontalPosition = EditorGUILayout.Slider("Horizontal Position", hd.HorizontalPosition, 0, 200); GUILayout.EndVertical(); if (GUI.changed) { EditorUtility.SetDirty(hd); } }