Eloy Perez

Just random things

GDscript 2 Signals

Posted at — mar. 9, 2023

Hasta Godot 3 las conexiones de señales en código se hacían así:

var areaNode: Area2D = $YourAwesomeArea2DNode
areaNode.connect("area_entered", self, "_on_area_entered")

Esto suponía que tanto el nombre de la señal como el método a ejecutar eran específicados de forma dinámica.

Esto traía consigo una serie de problemas como que si el nombre del método cambiaba y no te acordabas de cambiarlo tu juego dejaba de funcionar. Lo mismo ocurría si el nombre de la señal cambia, esto ocurre en casos en los que la señal la hayas creado tu.

El equipo de Godot ha estado trabajando para que las funcionas sean elementos de primer nivel en el lenguaje habilitando nuevas y mejores formas de configurar las señales.

Desde la versión 2 de GDScript, disponible en Godot 4, podemos conectar las señales de una forma mas segura.

areaNode.area_entered.connect(_on_area_entered)

Ahora podemos acceder directamente a la señal para configurarla y como parámetro al método connect especificaremos el método a ejecutar.

Si tanto la señal como el método dejasen de existir (porque hayan sido renombrados por ejemplo) el compilador emitirá un error inmediatamente, sin necesidad de ejecutar el juego y que el nodo que contiene la sentencia se instancie.