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