Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Haz que cada gema le indique a main.gd cuántos puntos vale.

  1. Declara signal collected(points) al principio de gem.gd.
  2. Al final de _on_body_entered, envía la señal con los points de 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

Practica por tu cuenta: Playground de Godot