Version: Unity 6.1 Beta (6000.1)
LanguageEnglish
  • C#

EditorApplication.RepaintHierarchyWindow

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Submission failed

For some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Declaration

public static void RepaintHierarchyWindow();

Description

Can be used to ensure repaint of the HierarchyWindow.

Use EditorApplication.RepaintHierarchyWindow to refresh the Hierarchy window when changes to GameObjects, such as names, icons, or tags, are not automatically reflected in the Hierarchy window. EditorApplication.RepaintHierarchyWindow can be useful when it is used with custom Editor tools or extensions that dynamically alter GameObject properties. Avoid frequent calls in a performance-critical context, because EditorApplication.RepaintHierarchyWindow might negatively affect Editor performance. This method must be used in the Unity Editor and it requires the UnityEditor namespace. Typically, you combine it with EditorApplication.hierarchyChanged or custom events to ensure UI consistency. Not applicable at runtime since it’s Editor-only. Additional resources: HierarchyWindowItemCallback, EditorApplication.hierarchyWindowItemOnGUI.

                using UnityEditor;
                using UnityEngine;

[InitializeOnLoad] public class CustomHierarchyStyling { static CustomHierarchyStyling() { // Register a callback to draw custom icons in the Hierarchy. EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI; // Repaint the Hierarchy window when the tag changes to reflect icon updates EditorApplication.hierarchyChanged += () => EditorApplication.RepaintHierarchyWindow(); }

static void OnHierarchyGUI(int instanceID, Rect selectionRect) { GameObject obj = EditorUtility.InstanceIDToObject(instanceID) as GameObject;

//Add a tag named "Special" to the GameObject to display the custom icon if (obj != null && obj.CompareTag("Special")) { // Draw a custom icon on the left side of the GameObject in the Hierarchy Rect iconRect = new Rect(selectionRect.x - 20, selectionRect.y, 18, 18); GUI.Label(iconRect, EditorGUIUtility.IconContent("d_Favorite")); } } }