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

Undo.RegisterFullObjectHierarchyUndo

Объявление

public static void RegisterFullObjectHierarchyUndo(Object objectToUndo, string name);

Параметры

objectToUndo Объект, используемый для определения иерархии объектов, изменения состояния которых необходимо отменить.
name Имя операции отмены.

Описание

Копировать состояния иерархии объектов в стек отмены.

Эта функция работает аналогично Undo.RegisterCompleteObjectUndo. Ключевое отличие состоит в том, что вместо копирования состояний одного объекта эта функция сохраняет состояния иерархии объектов. В зависимости от типа objectToUndo иерархия определяется по-разному:

* Если objectToUndo является игровым объектом, иерархия будет содержать (a) сам objectToUndo и его дочерние игровые объекты; (б) компоненты, прикрепленные к этим игровым объектам.

* Если objectToUndo является компонентом, прикрепленным к существующему игровому объекту, иерархия будет содержать игровой объект и все его компоненты, включая объектОтменить. Дочерние игровые объекты в данном случае НЕ участвуют.

* Во всех остальных случаях иерархия будет содержать только сам objectToUndo. Это эквивалентно вызову Undo.RegisterCompleteObjectUndo с теми же параметрами.

Если выполняется отмена, любые изменения, внесенные в объекты в описанной выше иерархии после вызова этой функции, будут отменены, и объекты будут восстановлены в записанном состоянии.

Преобразование, изменение родительского объекта, добавление компонента и уничтожение объекта не могут быть восстановлены с помощью этой функции, для этого следует использовать специальные функции. См. разделы Undo.SetTransformParent, Undo.AddComponent, Undo.DestroyObjectImmediate. .

Если какой-либо задействованный объект является частью текущей Сцены (например, игровой объект в окне Иерархия или компонент, присоединенный к такому игровому объекту), вызов этой функции немедленно пометит Сцену как измененную, даже если вы на самом деле этого не сделали. впоследствии изменить состояния объектов.

using UnityEngine; using UnityEditor; public class UndoExamples { [MenuItem("Undo Examples/RegisterFullObjectHierarchyUndo 1")] static void Example1() { GameObject root = new GameObject("Root"); MeshRenderer rootComponent1 = root.AddComponent<MeshRenderer>(); MeshCollider rootComponent2 = root.AddComponent<MeshCollider>(); GameObject child = new GameObject("Child"); child.transform.parent = root.transform; MeshRenderer childComponent1 = child.AddComponent<MeshRenderer>(); MeshCollider childComponent2 = child.AddComponent<MeshCollider>(); // Store the states of 'root' and its children. Undo.RegisterFullObjectHierarchyUndo(root, "full object hierarchy change"); root.name = "New Root"; child.name = "New Child"; rootComponent1.enabled = false; rootComponent2.enabled = false; childComponent1.enabled = false; childComponent2.enabled = false; // If you choose "Edit->Undo full object hierarchy change" from the main menu now, // the states of both game objects and their components will be restored to what they were right before calling Undo.RegisterFullObjectHierarchyUndo. } } using UnityEngine; using UnityEditor; public class UndoExamples { [MenuItem("Undo Examples/RegisterFullObjectHierarchyUndo 2")] static void Example2() { GameObject root = new GameObject("Root"); MeshRenderer rootComponent1 = root.AddComponent<MeshRenderer>(); MeshCollider rootComponent2 = root.AddComponent<MeshCollider>(); GameObject child = new GameObject("Child"); child.transform.parent = root.transform; MeshRenderer childComponent1 = child.AddComponent<MeshRenderer>(); MeshCollider childComponent2 = child.AddComponent<MeshCollider>(); // Store the states of 'root' and all of its components. Undo.RegisterFullObjectHierarchyUndo(rootComponent1, "full object hierarchy change"); root.name = "New Root"; child.name = "New Child"; rootComponent1.enabled = false; rootComponent2.enabled = false; childComponent1.enabled = false; childComponent2.enabled = false; // If you choose "Edit->Undo full object hierarchy change" from the main menu now, // the states of 'root' and all of its components will be restored to what they were right before calling Undo.RegisterFullObjectHierarchyUndo, // but changes made to 'child' and its components won't be restored. } }
Устаревший Вместо этого используйте Undo.RegisterFullObjectHierarchyUndo(Object, string).

Объявление

public static void RegisterFullObjectHierarchyUndo(Object objectToUndo);

Описание

Эта перегрузка устарела. Вместо этого используйте Undo.RegisterFullObjectHierarchyUndo(Object, string).

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3