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

Undo.RecordObject

Объявление

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

Параметры

objectToUndo Ссылка на объект, который вы будете изменять.
name Название действия, которое будет отображаться в истории отмен (т. е. отображаться в меню отмены).

Описание

Записывает любые изменения, сделанные в объекте после функции RecordObject.

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

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

Важно! Для правильной обработки экземпляров, где objectToUndo является экземпляром Prefab, PrefabUtility.RecordPrefabInstancePropertyModifications должен вызываться после RecordObject.

Это пример скрипта редактора, который позволяет изменить переменную радиуса эффекта. Состояние отмены записывается, что позволяет отменить изменение с помощью системы отмены.

// Назовите этот скрипт "EffectRadiusEditor" using UnityEngine; using UnityEditor; [CustomEditor(typeof(EffectRadius))] public class EffectRadiusEditor : Editor { public void OnSceneGUI() { EffectRadius t = (target as EffectRadius); EditorGUI.BeginChangeCheck(); float areaOfEffect = Handles.RadiusHandle(Quaternion.identity, t.transform.position, t.areaOfEffect); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(target, "Changed Area Of Effect"); t.areaOfEffect = areaOfEffect; } } }

Поместите этот скрипт в GameObject, чтобы увидеть маркер области эффекта, и измените значение с помощью гизмо в представлении "Сцена".

// Назовите этот скрипт "EffectRadius" using UnityEngine; using System.Collections; public class EffectRadius : MonoBehaviour { public float areaOfEffect = 1; }

Смотрите так же: Undo.RecordObjects

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