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 corchetes 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 imprime:
func _on_gem_collected(points):
score += points
print("Score: ", score)Las dos gemas ejecutan el mismo script. El valor de points de la gema pequeña es 10 y el de la grande es 25; se establece en cada nodo de la escena. 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ía la señal con lospointsde la gema.
Pulsa «Jugar» y pasa por encima de ambas gemas: la consola muestra Score: 10 y después Score: 35. Luego, pulsa «Comprobar».
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
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