class in UnityEditor
Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.
CloseFor some reason your suggested change could not be submitted. Please <a>try again</a> in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.
CloseLets you register undo operations on specific objects you are about to perform changes on.
The Undo system stores delta changes in the undo stack.
Undo operations automatically combine together based on events. For example, mouse down events split undo groups. Grouped undo operations appear and work as a single undo. To control grouping manually, use Undo.IncrementCurrentGroup.
By default, the name shown in the UI is selected from the actions from the group using a hardcoded ordering of the different kinds of actions. To manually set the name, use Undo.SetCurrentGroupName.
Undo operations store either per property or per object state. They scale well with any Scene size.
The most important operations are outlined below:
Modify object properties:
Undo.RecordObject (myGameObject.transform, "Zero Transform Position");
myGameObject.transform.position = Vector3.zero;
Add a component:
Undo.AddComponent<Rigidbody>(myGameObject);
Create a new GameObject:
var go = new GameObject();
Undo.RegisterCreatedObjectUndo (go, "Created go");
Destroy a GameObject or component:
Undo.DestroyObjectImmediate (myGameObject);
Change transform parenting:
Undo.SetTransformParent (myGameObject.transform, newTransformParent, "Set new parent");
isProcessing | Returns true if the editor is currently processing undo or redo operations, false otherwise. |
postprocessModifications | Callback that is triggered whenever a new set of property modifications is created. |
undoRedoEvent | Callback that is triggered after any undo or redo event. |
undoRedoPerformed | Callback that is triggered after an undo or a redo was executed. |
willFlushUndoRecord | Invoked before the Undo system performs a flush. |
AddComponent | Adds a component to the game object and registers an undo operation for this action. |
ClearAll | Removes all undo and redo operations from respectively the undo and redo stacks. |
ClearUndo | Removes all Undo operation for the identifier object registered using Undo.RegisterCompleteObjectUndo from the undo stack. |
CollapseUndoOperations | Collapses all undo operations down to group index together into one step. |
DestroyObjectImmediate | Destroys the object and records an undo operation so that it can be recreated. |
FlushUndoRecordObjects | Ensure objects recorded using RecordObject or RecordObjects are registered as an undoable action. In most cases there is no reason to invoke FlushUndoRecordObjects since it's automatically done right after mouse-up and certain other events that conventionally marks the end of an action. |
GetCurrentGroup | Unity automatically groups undo operations by the current group index. |
GetCurrentGroupName | Get the name that will be shown in the UI for the current undo group. |
IncrementCurrentGroup | Unity automatically groups undo operations by the current group index. |
MoveGameObjectToScene | Move a GameObject from its current Scene to a new Scene. It is required that the GameObject is at the root of its current Scene. |
PerformRedo | Perform an Redo operation. |
PerformUndo | Perform an Undo operation. |
RecordObject | Records any changes done on the object after the RecordObject function. |
RecordObjects | Records multiple undoable objects in a single call. This is the same as calling Undo.RecordObject multiple times. |
RegisterChildrenOrderUndo | Stores a copy of the order of the object's children on the undo stack. |
RegisterCompleteObjectUndo | Stores a copy of the object states on the undo stack. |
RegisterCreatedObjectUndo | Registers an undo operation to undo the creation of an object. |
RegisterFullObjectHierarchyUndo | Copy the states of a hierarchy of objects onto the undo stack. |
RegisterImporterUndo | Copies the state of the importer for the given asset path. |
RevertAllDownToGroup | Performs all undo operations up to the group index without storing a redo operation in the process. |
RevertAllInCurrentGroup | Performs the last undo operation but does not record a redo operation. |
SetCurrentGroupName | Set the name of the current undo group. |
SetSiblingIndex | Sets the sibling index of transform and records an undo operation. |
SetTransformParent | Sets the parent of transform to the new parent and records an undo operation. |
PostprocessModifications | Delegate used for postprocessModifications. |
UndoRedoCallback | Delegate used for undoRedoPerformed. |
UndoRedoEventCallback | Delegate used for undoRedoEvent. |
WillFlushUndoRecord | Delegate used for willFlushUndoRecord. |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.