允许您在即将对特定对象进行更改时注册撤销操作。
撤销系统在撤销堆栈中存储增量更改。
撤销操作会根据事件自动组合在一起。例如,鼠标按下事件会分割撤销组。分组的撤销操作将显示并作为一个单一撤销操作工作。要手动控制分组,请使用 Undo.IncrementCurrentGroup。
默认情况下,UI 中显示的名称是从组中的操作中选取的,使用硬编码的各种操作类型的排序。要手动设置名称,请使用 Undo.SetCurrentGroupName。
撤销操作存储每个属性或每个对象状态。它们可以很好地扩展到任何场景大小。
最重要的操作概述如下
修改对象属性
Undo.RecordObject (myGameObject.transform, "Zero Transform Position");
myGameObject.transform.position = Vector3.zero;
添加组件
Undo.AddComponent<Rigidbody>(myGameObject);
创建新的游戏对象
var go = new GameObject();
Undo.RegisterCreatedObjectUndo (go, "Created go");
销毁游戏对象或组件
Undo.DestroyObjectImmediate (myGameObject);
更改变换父子关系
Undo.SetTransformParent (myGameObject.transform, newTransformParent, "Set new parent");
isProcessing | 如果编辑器当前正在处理撤销或重做操作,则返回 true,否则返回 false。 |
postprocessModifications | 每当创建新的属性修改集时触发的回调函数。 |
undoRedoEvent | 在任何撤销或重做事件后触发的回调函数。 |
undoRedoPerformed | 在执行撤销或重做操作后触发的回调函数。 |
willFlushUndoRecord | 在撤销系统执行刷新之前调用。 |
AddComponent | 向游戏对象添加组件并为该操作注册撤销操作。 |
ClearAll | 分别从撤销堆栈和重做堆栈中删除所有撤销和重做操作。 |
ClearUndo | 从撤销堆栈中删除使用 Undo.RegisterCompleteObjectUndo 注册的标识对象的所有撤销操作。 |
CollapseUndoOperations | 将所有撤销操作折叠到一起的组索引,成为一步操作。 |
DestroyObjectImmediate | 销毁对象并记录撤销操作,以便可以重新创建它。 |
FlushUndoRecordObjects | 确保使用 RecordObject 或 RecordObjects 记录的对象被注册为可撤销操作。在大多数情况下,没有理由调用 FlushUndoRecordObjects,因为它会在鼠标抬起和其他某些通常标志着操作结束的事件之后自动完成。 |
GetCurrentGroup | Unity 会根据当前的组索引自动将撤销操作分组在一起。 |
GetCurrentGroupName | 获取将在 UI 中显示的当前撤销组的名称。 |
IncrementCurrentGroup | Unity 会根据当前的组索引自动将撤销操作分组在一起。 |
MoveGameObjectToScene | 将游戏对象从其当前场景移动到新场景。要求游戏对象位于其当前场景的根目录中。 |
PerformRedo | 执行重做操作。 |
PerformUndo | 执行撤销操作。 |
RecordObject | 记录在 RecordObject 函数之后对对象进行的任何更改。 |
RecordObjects | 在一个调用中记录多个可撤销的对象。这与多次调用 Undo.RecordObject 相同。 |
RegisterChildrenOrderUndo | 在撤销堆栈上存储对象子项顺序的副本。 |
RegisterCompleteObjectUndo | 在撤销堆栈上存储对象状态的副本。 |
RegisterCreatedObjectUndo | 注册撤销操作以撤销对象的创建。 |
RegisterFullObjectHierarchyUndo | 将对象层次结构的状态复制到撤销堆栈。 |
RegisterImporterUndo | 复制给定资产路径的导入器的状态。 |
RevertAllDownToGroup | 执行所有撤销操作,直到组索引,而不存储重做操作。 |
RevertAllInCurrentGroup | 执行最后一个撤销操作,但不记录重做操作。 |
SetCurrentGroupName | 设置当前撤销组的名称。 |
SetSiblingIndex | 设置变换的兄弟索引并记录撤销操作。 |
SetTransformParent | 将变换的父级设置为新父级并记录撤销操作。 |
PostprocessModifications | 用于 postprocessModifications 的委托。 |
UndoRedoCallback | 用于 undoRedoPerformed 的委托。 |
UndoRedoEventCallback | 用于 undoRedoEvent 的委托。 |
WillFlushUndoRecord | 用于 willFlushUndoRecord 的委托。 |