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--; } } }
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 }); } } }