Hierarchy
1.EditorApplication.hierarchyWindowItemOnGUI //绘制的回调
2.EditorApplication.RepaintHierarchyWindow(); // 更新Hierarchy窗口
3.EditorApplication.hierarchyChanged //Hierarchy窗口变化回调(创建对象以及对其进行重命名、重定父级或销毁,以及加载、卸载、重命名或重新排序已加载的场景)
using UnityEngine;
using UnityEditor;
using System;
[InitializeOnLoad]
public class HierarchyTest
{
private static bool isEnable = false;
[MenuItem("MyMenu/Hierarchy")]
static void ActiveEnable()
{
if (isEnable)
{
isEnable = false;
//取消注册
EditorApplication.hierarchyWindowItemOnGUI -= HierarchyWindow;
EditorApplication.hierarchyChanged -= OnHierarchyChanged;
}
else
{
isEnable = true;
//注册
EditorApplication.hierarchyWindowItemOnGUI += HierarchyWindow;
EditorApplication.hierarchyChanged += OnHierarchyChanged;
}
Menu.SetChecked("MyMenu/Hierarchy", isEnable);
//刷新
EditorApplication.RepaintHierarchyWindow();
}
//更新
private static void OnHierarchyChanged()
{
Debug.Log("OnHierarchyChanged");
}
//渲染
private static void HierarchyWindow(int instanceID, Rect selectionRect)
{
GameObject go = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
if (go != null)
{
EditorGUI.LabelField(new Rect(selectionRect.x + 100, selectionRect.y, selectionRect.width, selectionRect.height), go.transform.tag);
EditorGUI.LayerField(new Rect(selectionRect.x + 200, selectionRect.y, selectionRect.width, selectionRect.height), go.layer);
}
}
static HierarchyTest()
{
Menu.SetChecked("MyMenu/Hierarchy", isEnable);
}
}
免费课程链接:
独立游戏《Unity打造关卡编辑器》Unity 独立游戏 关卡编辑器https://bycwedu.vipwan.cn/promotion_channels/72762192