Programming/Unity

에디터 윈도우 커스텀하게 변경하기

Inner-Peace 2021. 3. 24. 17:22
반응형
using UnityEngine;
using UnityEditor;


[InitializeOnLoad]
public class CustomHierarchy : MonoBehaviour
{
    static CustomHierarchy()
    {
        EditorApplication.hierarchyWindowItemOnGUI += HandleHierarchyWindowItemOnGUI;
        EditorApplication.projectWindowItemOnGUI += HandleProjectWindowItemOnGUI;
    }

    private static void HandleHierarchyWindowItemOnGUI(int instanceID, Rect selectionRect)
    {
        var obj = EditorUtility.InstanceIDToObject(instanceID) as GameObject;        
        
        if (obj != null)
        {
            if (obj.name.Equals("name"))
            {
            	// 배경색 바꾸기
                EditorGUI.DrawRect(selectionRect, new Color(0.01f, 0.4f, 0.25f, 0.5f));
                
                //라벨 그리기
                Rect offsetRect = new Rect(selectionRect.position, selectionRect.size);
                EditorGUI.LabelField(offsetRect, obj.name, new GUIStyle() {
                    normal = new GUIStyleState() { textColor = Color.red },
                    fontStyle = FontStyle.Normal
                });
            }
        }
    }

    private static void HandleProjectWindowItemOnGUI(string guid, Rect selectionRect)   
    {
        string fileName = AssetDatabase.GUIDToAssetPath(guid);
        var go = AssetDatabase.LoadAssetAtPath(fileName, typeof(GameObject));

        if (go != null && go.name.Contains("name"))
        {
        	// 배경색 바꾸기
            EditorGUI.DrawRect(selectionRect, new Color(0.01f, 0.4f, 0.25f, 0.5f));
        }

    }
}

EditorApplication  

반응형