Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
UndoRedo¶
Inherits: Object
Ayudante para gestionar las operaciones de deshacer/rehacer en el editor o las herramientas personalizadas.
Descripción¶
Ayudante para gestionar las operaciones de deshacer/rehacer en el editor o las herramientas personalizadas. Funciona registrando métodos y cambios de propiedades dentro de las "acciones".
El comportamiento común es crear una acción, luego agregar llamadas de hacer/deshacer a las funciones o cambios de propiedades, y luego confirmar la acción.
Aquí hay un ejemplo de cómo añadir una acción al propio editor de Godot UndoRedo
, desde un plugin:
var undo_redo = get_undo_redo() # Método de EditorPlugin.
func do_something():
pass # Ponga su código aquí.
func undo_something():
pass # Ponga aquí el código que revierte lo que se hace con "do_something()".
func _on_MyButton_pressed():
var node = get_node("MiNodo2D")
undo_redo.create_action("Mover el nodo")
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, y commit_action deberían ser llamados uno tras otro, como en el ejemplo. Si no se hace así, se pueden producir caídas.
Si no necesitas registrar un método, puedes dejar fuera add_do_method y add_undo_method; lo mismo vale para las propiedades. También puedes registrar más de un método/propiedad.
Métodos¶
void |
add_do_method ( Object object, String method, ... ) vararg |
void |
add_do_property ( Object object, String property, Variant value ) |
void |
add_do_reference ( Object object ) |
void |
add_undo_method ( Object object, String method, ... ) vararg |
void |
add_undo_property ( Object object, String property, Variant value ) |
void |
add_undo_reference ( Object object ) |
void |
clear_history ( bool increase_version=true ) |
void |
commit_action ( ) |
void |
create_action ( String name, MergeMode merge_mode=0 ) |
get_current_action_name ( ) const |
|
get_version ( ) const |
|
has_redo ( ) const |
|
has_undo ( ) const |
|
is_commiting_action ( ) const |
|
redo ( ) |
|
undo ( ) |
Señales¶
version_changed ( )
Enumeraciones¶
enum MergeMode:
MERGE_DISABLE = 0 --- Hace que las operaciones de "hacer"/"deshacer" se mantengan en acciones separadas.
MERGE_ENDS = 1 --- Hace que la operación "hacer" de la acción sea de la primera acción creada y la operación "deshacer" sea de la última acción posterior con el mismo nombre.
MERGE_ALL = 2 --- Hace que las acciones subsiguientes con el mismo nombre se fusionen en una sola.
Descripciones de Métodos¶
Registrar un método que será llamado cuando se cometa la acción.
Registrar un cambio de valor de la propiedad para "hacer".
void add_do_reference ( Object object )
Registra una referencia para "hacer" que se borrará si se pierde la historia de "hacer". Esto es útil sobre todo para los nuevos nodos creados para la llamada "hacer". No lo utilice para los recursos.
Registra un método que se llamará cuando se deshaga la acción.
Registrar un cambio en el valor de la propiedad para "deshacer".
void add_undo_reference ( Object object )
Registra una referencia para "deshacer" que se borrará si se pierde la historia de "deshacer". Esto es útil sobre todo para los nodos eliminados con la llamada "hacer" (¡no la llamada "deshacer"!).
void clear_history ( bool increase_version=true )
Borra el historial de deshacer/rehacer y las referencias asociadas.
Pasar false
a increase_version
evitará que el número de versión se incremente a partir de esto.
void commit_action ( )
Comete la acción. Todos los métodos/propiedades "hacer" son llamados/fijados cuando se llama a esta función.
Crear una nueva acción. Después de que esto sea llamado, haz todas tus llamadas a add_do_method, add_undo_method, add_do_property, y add_undo_property, y luego confirma la acción con commit_action.
La forma en que se fusionan las acciones está dictada por el argumento merge_mode
. Ver MergeMode para más detalles.
String get_current_action_name ( ) const
Obtiene el nombre de la acción actual.
int get_version ( ) const
Consigue la versión. Cada vez que se comete una nueva acción, el número de versión de UndoRedo
s se incrementa automáticamente.
Esto es útil sobre todo para comprobar si algo cambió de una versión guardada.
bool has_redo ( ) const
Devuelve true
si una acción de "redo" está disponible.
bool has_undo ( ) const
Devuelve true
si se dispone de una acción de "deshacer".
bool is_commiting_action ( ) const
Devuelve true
si el UndoRedo
está actualmente cometiendo la acción, es decir, ejecutando su método "hacer" o cambio de propiedad (ver commit_action).
bool redo ( )
Rehacer la última acción.
bool undo ( )
Deshace la última acción.