Version: 2021.3

Undo.RegisterCompleteObjectUndo

切换到手册
public static void RegisterCompleteObjectUndo (Object objectToUndo, string name);

参数

objectToUndo 需要撤销状态更改的对象。
name 撤销操作的名称。

描述

将对象状态存储在撤销堆栈上。

如果执行了撤销操作,那么在调用这一函数后对对象所做的任何更改都将被撤销,并且该对象将恢复到记录的状态。

无法使用这一函数恢复变换组件父项的更改、AddComponent 和对象销毁,应该使用专用函数来恢复。请参阅 Undo.SetTransformParentUndo.AddComponentUndo.DestroyObjectImmediate

如果对象是当前场景的一部分(例如层级视图中的某个游戏对象或附加到此类游戏对象上的组件),则调用这一函数可以立即将场景标记为已修改,即便您后来并没有更改对象的状态,也是如此。

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);

参数

objectsToUndo 需要撤销状态更改的一系列对象。
name 撤销操作的名称。

描述

这与多次调用第一个重载的效果是一样的,只不过前者只生成一个撤销操作。