UndoRedo

继承: Object

类别: 核心

简要说明

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

方法

Variant

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

无效

add_do_property ( Object object, String property, Variant value )

无效

add_do_reference ( Object object )

Variant

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

无效

add_undo_property ( Object object, String property, Variant value )

无效

add_undo_reference ( Object object )

无效

clear_history ( bool increase_version=true )

无效

commit_action ( )

无效

create_action ( String name, MergeMode merge_mode=0 )

String

get_current_action_name ( ) const

int

get_version ( ) const

bool

has_redo ( )

bool

has_undo ( )

bool

is_commiting_action ( ) const

bool

redo ( )

bool

undo ( )

信号

  • version_changed ( )

何时调用 undoredo 被叫来。

枚举

枚举 MergeMode

  • MERGE_DISABLE = 0 ---使“do”/“undo”操作保持在单独的操作中。

  • MERGE_ENDS = 1 ---使操作的“do”操作来自创建的第一个操作,“undo”操作来自具有相同名称的最后一个后续操作。

  • MERGE_ALL = 2 ---使同名的后续动作合并为一个动作。

描述

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

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

下面是一个关于如何将操作添加到Godot编辑器中的示例 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_methodadd_undo_methodadd_do_propertyadd_undo_propertycommit_action 应该一个接一个地调用,就像在示例中一样。不这样做可能导致撞车。

如果不需要注册方法,可以离开 add_do_methodadd_undo_method 出局;同样适用于属性。您还可以注册多个方法/属性。

方法说明

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

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

  • void add_do_reference ( Object object )

为“do”注册一个引用,如果“do”历史丢失,该引用将被删除。这对于为“do”调用创建的新节点非常有用。不要用于资源。

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

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

  • void add_undo_reference ( Object object )

为“撤消”注册一个引用,如果“撤消”历史丢失,该引用将被删除。这对于使用“do”调用(而不是“undo”调用)删除的节点非常有用!.

  • void clear_history ( bool increase_version=true )

清除撤消/重做历史记录和关联的引用。

经过 falseincrease_version 将阻止从此处增加版本号。

  • void commit_action ( )

执行操作。调用此函数时,调用/设置所有“do”方法/属性。

创建新操作。打完电话后,把你所有的电话都打给 add_do_methodadd_undo_methodadd_do_propertyadd_undo_property ,然后用提交操作 commit_action .

合并操作的方式由 merge_mode 参数。见 MergeMode 有关详细信息。

  • String get_current_action_name ( ) const

获取当前操作的名称。

  • int get_version ( ) const

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

这主要用于检查保存的版本是否发生了更改。

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

返回 true 如果“撤消”操作可用。

  • bool is_commiting_action ( ) const

返回 true 如果 UndoRedo 当前正在提交操作,即运行其“do”方法或属性更改(请参见 commit_action

重做上一个操作。

撤消上一个操作。