当层级结构中的对象或对象组发生更改时触发的事件。
触发此事件的操作包括在当前层级结构中创建、重命名、重新设置父级或销毁对象,以及加载、卸载、重命名或重新排序已加载的场景。请注意,此事件并非立即响应这些操作,而是在编辑器应用程序的下一次更新期间触发。
对设置了HideFlags.HideInHierarchy的对象执行的操作不会触发此事件,但更改Object.hideFlags 会触发。
以下示例脚本在层级结构发生更改时将对象数量记录到控制台。将其复制到名为 HierarchyMonitor.cs 的文件中,并将其放在名为 Editor 的文件夹中。
using System.Linq; using UnityEditor; using UnityEngine;
[InitializeOnLoadAttribute] public static class HierarchyMonitor { static HierarchyMonitor() { EditorApplication.hierarchyChanged += OnHierarchyChanged; }
static void OnHierarchyChanged() { var all = Resources.FindObjectsOfTypeAll(typeof(GameObject)); var numberVisible = all.Where(obj => (obj.hideFlags & HideFlags.HideInHierarchy) != HideFlags.HideInHierarchy).Count(); Debug.LogFormat("There are currently {0} GameObjects visible in the hierarchy.", numberVisible); } }