매뉴얼로 전환
public static void RegisterCompleteObjectUndo (Object objectToUndo, string name);


objectToUndoThe object whose state changes need to be undone.
nameThe name of the undo operation.


Stores a copy of the object states on the undo stack.

If the undo is performed, any changes made to the object after this function is called will be undone, and the object will be restored to the recorded state.

Transform parent change, AddComponent, and object destruction can not be restored with this function, for that you should use the dedicated functions. See Undo.SetTransformParent, Undo.AddComponent, Undo.DestroyObjectImmediate.

If the object is part of the current scene (e.g. a game object in the Hierarchy or a component attached to such game object), calling this function will immediately mark the scene as modified, even if you don't actually change the states of the object afterwards.

using UnityEngine;
using UnityEditor;

public class UndoExamples { [MenuItem("Undo Examples/RegisterCompleteObjectUndo")] static void Example() { GameObject player = new GameObject("Player");

// Store the states of the player object. Undo.RegisterCompleteObjectUndo(player, "Player name change");

player.name = "New Player";

// If you choose "Edit->Undo Player name change" from the main menu now, the name of the object will be restored to "Player". } }

public static void RegisterCompleteObjectUndo (Object[] objectsToUndo, string name);


objectsToUndoAn array of objects whose state changes need to be undone.
nameThe name of the undo operation.


This is equivalent to calling the first overload mutiple times, save for the fact that only one undo operation will be generated for this one.