En Godot, los signals son como mensajes entre nodos que se mandan cuando “algo pasa”.
Imagina esto: tu personaje recoge una moneda → el juego le grita al marcador: “¡Hey, suma 1!”.
Eso es un signal. Comunicación clara, sin enredos.
🧠 ¿Para qué sirven los signals?
Sirven para que los nodos se hablen sin estar pegados con cinta. Así tu código es más limpio y fácil de mantener.
💬 Ejemplos comunes:
-
Cuando presionas un botón → que cambie de escena
-
Cuando se acaba el tiempo → que aparezca el “Game Over”
-
Cuando te matan → que suene una alarma y se reinicie el nivel
🔧 ¿Cómo se usa un signal?
1.Emitir el signal (desde el nodo que hace algo):
signal player_died
func _on_Enemy_body_entered(body):
if body.name == “Player”:
emit_signal(“player_died”)
2. Conectarlo (en el nodo que necesita reaccionar):
$Player.connect(“player_died”, Callable(self, “_on_PlayerDied”))
func _on_PlayerDied():
print(“Game Over bro.”)
📦 Bonus: señales ya vienen con Godot
No siempre necesitas crearlas tú. Muchos nodos ya las traen listas:
Nodo | Signal | Cuándo se dispara |
---|---|---|
Button |
pressed() |
Cuando haces clic |
Area2D |
body_entered(body) |
Cuando un cuerpo entra en el área |
Timer |
timeout() |
Cuando se agota el tiempo |
AnimationPlayer |
animation_finished() |
Al terminar una animación |