Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

EditorWindow.OnHierarchyChange()

Описание

Обработчик сообщения, отправляемого при изменении объекта или группы объектов в иерархии.

Действия, вызывающие появление этого сообщения, включают создание, переименование, переназначение или уничтожение объектов в текущей иерархии, а также загрузку, выгрузку, переименование или изменение порядка загруженных сцен. Обратите внимание, что сообщение отправляется не сразу в ответ на эти действия, а во время следующего обновления приложения-редактора.

Действия, предпринятые с объектами, для которых установлено значение HideFlags.HideInHierarchy, не приведут к отправке этого сообщения, но изменят объект. hideFlags будет.

В редактор Unity добавляется OnHierarchyChange(). После установки объекты - это часы в сцене и инспекторе. Добавление нового игрового объекта в сцену или изменение положения игрового объекта в инспекторе будет наблюдаться функцией OnHierarchyChange(). Аналогичным образом будут видны изменения поворота и масштаба.

Анимация, показывающая, как можно использовать OnHierarchyChange.

Смотрите так же: EditorApplication.hierarchyChange

В следующем примере скрипта создается EditorWindow, который отслеживает количество объектов и обновляется при каждом изменении иерархии. Скопируйте его в файл HierarchyMonitorWindow.cs и поместите в папку Editor.

using System.Linq; using UnityEditor; using UnityEngine; class HierarchyMonitorWindow : EditorWindow { [MenuItem("Window/Hierarchy Monitor")] static void CreateWindow() { EditorWindow.GetWindow(); } [SerializeField] int m_NumberVisible; void OnEnable() { titleContent.text = "Hierarchy Monitor"; // manually call the event handler when the window is first loaded so its contents are up-to-date OnHierarchyChange(); } void OnHierarchyChange() { var all = Resources.FindObjectsOfTypeAll(typeof(GameObject)); m_NumberVisible = all.Where(obj => (obj.hideFlags & HideFlags.HideInHierarchy) != HideFlags.HideInHierarchy).Count(); } void OnGUI() { EditorGUILayout.LabelField( string.Format("There are currently {0} GameObjects visible in the hierarchy.", m_NumberVisible) ); } }

Еще один простой пример.

// При изменении иерархии // // Просмотр Иерархия и доступ к инспектору. Когда игровые объекты изменены или новые // при добавлении или удалении будет вызываться этот пример. using UnityEngine; using UnityEditor; public class ExampleClass : EditorWindow { static int count = 0; [MenuItem("Example/OnHierarchyChange Example")] static void Init() { ExampleClass window = (ExampleClass)GetWindow(typeof(ExampleClass)); window.Show(); } void OnHierarchyChange() { count += 1; this.Repaint(); } void OnGUI() { GUI.Label(new Rect(5, 5, 205, 35), "OnHierarchyChange: " + count.ToString()); } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3