private void OnGUI() { bool was = CustomHierarchyData.On; CustomHierarchyData.On = EditorGUILayout.Toggle("Enable : ", CustomHierarchyData.On); if (CustomHierarchyData.On != was) { EditorApplication.RepaintHierarchyWindow(); } if (GUILayout.Button("Load")) { CustomHierarchyData.Load(); } if (GUILayout.Button("Save")) { CustomHierarchyData.Save(); } GUILayout.BeginHorizontal(); if (currentTab == Tab.Main) { if (GUILayout.Button("Main", new GUIStyle() { fontStyle = FontStyle.Bold, alignment = TextAnchor.MiddleCenter }, GUILayout.Width(100))) { } if (GUILayout.Button("Options", GUILayout.Width(100))) { currentTab = Tab.Option; } } else { if (GUILayout.Button("Main", GUILayout.Width(100))) { currentTab = Tab.Main; } if (GUILayout.Button("Options", new GUIStyle() { fontStyle = FontStyle.Bold, alignment = TextAnchor.MiddleCenter }, GUILayout.Width(100))) { } } GUILayout.EndHorizontal(); if (currentTab == Tab.Main) { DrawMain(); } else { DrawOptions(); } }
void DrawMain() { if (target) { if (CustomHierarchyData.Contains(target.name) == false) { if (GUILayout.Button("Add selected")) { CustomHierarchyData.Add(target.name); } } else { if (GUILayout.Button("Remove selected")) { CustomHierarchyData.Remove(target.name); } } } foreach (CustomHElement elem in CustomHierarchyData.list) { bool b = opened.Contains(elem.Name); b = EditorGUILayout.Foldout(b, elem.Name); if (b && opened.Contains(elem.Name) == false) { opened.Add(elem.Name); } else if (!b) { opened.Remove(elem.Name); } if (b) { EditorGUI.indentLevel++; Vector3 currentPos = GUILayoutUtility.GetLastRect().position; //EditorGUI.DrawRect(new Rect(currentPos.x, currentPos.y+16, EditorWindow.GetWindow(typeof(Window_HierarchyCustomize)).maxSize.x - EditorWindow.GetWindow(typeof(Window_HierarchyCustomize)).minSize.x, 76), Color.grey); elem.color = EditorGUILayout.ColorField("BGColor : ", elem.color); elem.fontColor = EditorGUILayout.ColorField("Font colot : ", elem.fontColor); elem.comment = EditorGUILayout.DelayedTextField("Comment: ", elem.comment); if (GUILayout.Button("Remove", GUILayout.Width(60))) { CustomHierarchyData.list.Remove(elem); EditorApplication.RepaintHierarchyWindow(); return; } EditorGUI.indentLevel--; } } }
void DrawOptions() { EditorGUILayout.BeginHorizontal(); CustomizeHierarchy.PathToFolder = EditorGUILayout.TextField("Path to folders : ", CustomizeHierarchy.PathToFolder); if (GUILayout.Button("Default")) { CustomizeHierarchy.PathToFolder = "Assets\\CustomEditor\\styles"; } EditorGUILayout.EndHorizontal(); GUILayout.Label("Choosed style : " + CustomizeHierarchy.FileName); if (GUILayout.Button("Add new profile")) { string name = "Profile"; if (Directory.Exists(CustomizeHierarchy.PathToFolder) == false) { Debug.LogError("Can't find directory for styles"); return; } if (File.Exists(CustomizeHierarchy.PathToFolder + "/" + name + ".opt")) { int i = 1; name += "1"; while (File.Exists(CustomizeHierarchy.PathToFolder + "/" + name + ".opt")) { name = name.Replace(i.ToString(), (i + 1).ToString()); i++; } } File.Create(CustomizeHierarchy.PathToFolder + "/" + name + ".opt"); } foreach (string file in fileList) { GUILayout.BeginHorizontal(); if (GUILayout.Button(file, GUILayout.Width(100))) { AssetDatabase.Refresh(); CustomizeHierarchy.FileName = file; CustomHierarchyData.Load(); CustomHierarchyData.Save(); } GUILayout.Space(40); if (GUILayout.Button("DEL", GUILayout.Width(50))) { AssetDatabase.Refresh(); if (File.Exists(CustomizeHierarchy.PathToFolder + "/" + file)) { File.Delete(CustomizeHierarchy.PathToFolder + "/" + file); AssetDatabase.Refresh(); } } GUILayout.EndHorizontal(); } }
private static void HandleHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect) { if (CustomHierarchyData.On == false) { return; } Color fontColor = Color.blue; Color backgroundColor = new Color(1f, 0f, 0f); var obj = EditorUtility.InstanceIDToObject(instanceID); if (obj != null) { GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject; if (CustomHierarchyData.Contains(obj.name)) { string comment = ""; Rect offsetRect = new Rect(selectionRect.position + offset, selectionRect.size); if (Selection.instanceIDs.Contains(instanceID)) { fontColor = Color.white; backgroundColor = new Color(0.24f, 0.48f, 0.90f); EditorGUI.DrawRect(selectionRect, backgroundColor); } else { CustomHElement element = CustomHierarchyData.GetElement(obj.name); fontColor = element.fontColor; backgroundColor = element.color; comment = element.comment; Texture2D t = (Texture2D)AssetDatabase.LoadAssetAtPath("Assets/CustomEditor/img/back.png", typeof(Texture2D)); Texture2D text = new Texture2D(t.width, t.height); for (int x = 0; x < t.width; x++) { for (int y = 0; y < t.height; y++) { Color curColor = backgroundColor; curColor.a = t.GetPixel(x, y).a; text.SetPixel(x, y, curColor); } } text.wrapMode = TextureWrapMode.Clamp; text.Apply(); GUI.DrawTexture(selectionRect, text); } EditorGUI.LabelField(offsetRect, obj.name + " " + comment, new GUIStyle() { normal = new GUIStyleState() { textColor = fontColor }, fontStyle = FontStyle.Bold }); } } }