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 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.

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íala con los points de 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
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Godot