Параметры
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