EditorApplication.hierarchyChanged
Описание
Событие, возникающее при изменении объекта или группы объектов в иерархии.
Действия, вызывающие это событие, включают создание, переименование, изменение родительских прав или уничтожение объектов в текущей иерархии, а также загрузку, разгрузку, переименование или изменение порядка загруженных Сцен. Обратите внимание, что событие не возникает сразу же в ответ на эти действия, а во время следующего обновления приложения редактора.
Действия, предпринятые с объектами, для которых установлены HideFlags.HideInHierarchy, не вызывают возникновения этого события, но изменение Object.hideFlags вызывает возникновение события.
Следующий пример скрипта регистрирует количество объектов в консоли при каждом изменении иерархии. Скопируйте его в файл с названием HierarchyMonitor.cs и поместите его в папку с названием Редактор.
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,.