UndoRedo¶
继承: Object
类别: 核心
简要说明¶
帮助管理编辑器或自定义工具中的撤消/重做操作。
方法¶
add_do_method ( Object object, String method, ... ) vararg |
|
无效 |
add_do_property ( Object object, String property, Variant value ) |
无效 |
add_do_reference ( Object object ) |
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 ) |
get_current_action_name ( ) const |
|
get_version ( ) const |
|
has_redo ( ) |
|
has_undo ( ) |
|
is_commiting_action ( ) const |
|
redo ( ) |
|
undo ( ) |
枚举¶
枚举 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_action , add_do_method , add_undo_method , add_do_property , add_undo_property 和 commit_action 应该一个接一个地调用,就像在示例中一样。不这样做可能导致撞车。
如果不需要注册方法,可以离开 add_do_method 和 add_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 )
清除撤消/重做历史记录和关联的引用。
经过 false
到 increase_version
将阻止从此处增加版本号。
void commit_action ( )
执行操作。调用此函数时,调用/设置所有“do”方法/属性。
创建新操作。打完电话后,把你所有的电话都打给 add_do_method , add_undo_method , add_do_property 和 add_undo_property ,然后用提交操作 commit_action .
合并操作的方式由 merge_mode
参数。见 MergeMode 有关详细信息。
String get_current_action_name ( ) const
获取当前操作的名称。
int get_version ( ) const
获取版本。每次执行新操作时, UndoRedo
的版本号自动增加。
这主要用于检查保存的版本是否发生了更改。
bool has_redo ( )
返回 true
如果“重做”操作可用。
bool has_undo ( )
返回 true
如果“撤消”操作可用。
bool is_commiting_action ( ) const
返回 true
如果 UndoRedo
当前正在提交操作,即运行其“do”方法或属性更改(请参见 commit_action )
bool redo ( )
重做上一个操作。
bool undo ( )
撤消上一个操作。