Señales con valores
Parte de la sección Señales y colisiones del Journey de Godot de Coddy. Lección 8 de 27.
Una señal puede transportar valores, igual que body_entered transporta el cuerpo. Enuméralos entre paréntesis al declararla:
signal collected(points)Pasa los valores a emit(), en el mismo orden:
collected.emit(points)Todas las funciones conectadas a collected reciben el valor. Aquí, el script de Main suma los puntos a la puntuación y la muestra:
func _on_gem_collected(points):
score += points
print("Score: ", score)Ambas gemas ejecutan el mismo script. El valor de points de la gema pequeña es 10 y el de la grande es 25; estos valores se configuran en cada nodo desde el Inspector. Así que envía points, no un número que escribas directamente.
Desafío
FácilHaz que cada gema le indique a main.gd cuántos puntos vale:
- Declara
signal collected(points)al principio degem.gd. - Al final de
_on_body_entered, envíala con lospointsde la gema.
Pasa por encima de ambas gemas. La consola debería mostrar Score: 10, después Score: 35.
Pruébalo tú mismo
extends Area2D
@export var points = 10
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
if not visible:
return
visible = false
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Señales y colisiones
2Señales
Las áreas se encuentranTu propia señalSeñales con valoresLa señal de otro nodoEscucha tu señalPractica por tu cuenta: Playground de Godot