跳到主要内容

UndoRedo

继承

Object

简要描述

在编辑器或自定义工具中管理撤消/重做操作的助手。

描述

在编辑器或自定义工具中管理撤消/重做操作的助手。 它通过在“动作”中注册方法和属性更改来工作。

常见的行为是创建一个动作,然后将do /undo调用添加到函数或属性更改中,然后提交该动作。

这是一个有关如何从插件向IdeaXR编辑器自己的UndoRedo添加动作的示例:

var undo_redo = get_undo_redo() # Method of EditorPlugin.

func do_something():
pass # Put your code here.

func undo_something():
pass # Put here the code that reverts what's done by "do_something()".

func _on_MyButton_pressed():
var node = get_node("MyNode2D")
undo_redo.create_action("Move the node")
undo_redo.add_do_method(self, "do_something")
undo_redo.add_undo_method(self, "undo_something")
undo_redo.add_do_property(node, "position", Vector2(100,100))
undo_redo.add_undo_property(node, "position", node.position)
undo_redo.commit_action()

就像在示例中一样,应该依次调用create_actionadd_do_method(#method-add_do_method),add_undo_method(#method-add_undo_method),add_do_propertyadd_undo_propertycommit_action

如果不需要注册方法,则可以不使用add_do_method(#method-add_do_method)和add_undo_method(#method-add_undo_method)。

方法

返回值类型方法名称
voidadd_do_method(#method-add_do_method)(object: Object, method: String, ...) vararg
voidadd_do_property(object: Object, property: String, value: Variant)
voidadd_do_reference(object: Object)
voidadd_undo_method(#method-add_undo_method)(object: Object, method: String, ...) vararg
voidadd_undo_property(object: Object, property: String, value: Variant)
voidadd_undo_reference(object: Object)
voidclear_history(increase_version: bool = true)
voidcommit_action()
voidcreate_action(name: String, merge_mode: int = 0)
Stringget_current_action_name() const
intget_version() const
boolhas_redo()
boolhas_undo()
boolis_commiting_action() const
boolredo()
boolundo()

信号

  • **version_changed**

在调用undoredo时调用。


枚举

enum MergeMode:

  • **MERGE_DISABLE = 0**

使“ do” /“ undo”操作停留在单独的动作中。

  • **MERGE_ENDS = 1**

使操作的“执行”操作来自创建的第一个操作,而“撤消”操作来自最后一个具有相同名称的操作。

  • **MERGE_ALL = 2**

使具有相同名称的后续操作合并为一个。


方法说明

  • add_do_method add_do_method(object: Object, method: String, ...) vararg

注册一个在提交操作时将被调用的方法。


  • add_do_property add_do_property(object: Object, property: String, value: Variant)

为“ do”注册属性值更改。


  • add_do_reference add_do_reference(object: Object)

为“ do”注册一个引用,如果“ do”历史记录丢失,该引用将被删除。 这对于大多数为“ do”调用创建的新节点很有用。 请勿用于资源。


  • add_undo_method add_undo_method(object: Object, method: String, ...) vararg

注册一个撤消操作时将调用的方法。


  • add_undo_property add_undo_property(object: Object, property: String, value: Variant)

为“撤消”注册属性值更改。


  • add_undo_reference add_undo_reference(object: Object)

为“撤消”注册一个引用,如果“撤消”历史记录丢失,该引用将被删除。


  • clear_history clear_history(increase_version: bool = true)

清除撤消/重做历史记录和相关参考。

false传递给increase_version将防止版本号从此增加。


  • commit_action commit_action()

采取行动。


  • create_action create_action(name: String, merge_mode: int = 0)

创建一个新动作。 调用此方法后,请对add_do_method(#method-add_do_method),add_undo_method(#method-add_undo_method),add_do_propertyadd_undo_propertyadd_undo_property进行所有调用,然后使用commit_action提交操作。

合并动作的方式由merge_mode参数指定。 有关详细信息,请参见[枚举MergeMode]


  • get_current_action_name get_current_action_name() const

获取当前动作的名称。


  • get_version get_version() const

获取版本。 每次执行新操作时,UndoRedo的版本号都会自动增加。

这对于检查是否已保存的版本有所更改很有用。


  • has_redo has_redo()

如果“重做”操作可用,则返回true


  • has_undo has_undo()

如果可以使用“撤消”操作,则返回true


  • is_commiting_action is_commiting_action() const

如果UndoRedo当前正在执行操作(即运行其“ do”方法或属性更改),则返回true(请参阅commit_action)。


  • redo redo()

重做上一个动作。


  • undo undo()

撤消上一个动作。