版本:Unity 6 (6000.0)
语言English
  • C#

EditorApplication.hierarchyChanged

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

描述

当层级结构中的对象或对象组发生更改时触发的事件。

触发此事件的操作包括在当前层级结构中创建、重命名、重新设置父级或销毁对象,以及加载、卸载、重命名或重新排序已加载的场景。请注意,此事件并非立即响应这些操作,而是在编辑器应用程序的下一次更新期间触发。

对设置了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); } }

其他资源:EditorWindow.OnHierarchyChange