Menu
CoddyTech

Sinais com Valores

Parte da seção Sinais e colisões do Journey de Godot da Coddy. Lição 8 de 27.

Um sinal pode carregar valores, assim como body_entered carrega o corpo. Liste-os entre colchetes ao declará-lo:

signal collected(points)

Passe os valores para emit(), na mesma ordem:

collected.emit(points)

Toda função conectada a collected recebe o valor. Aqui, o script em Main adiciona os pontos à pontuação e a exibe:

func _on_gem_collected(points):
	score += points
	print("Score: ", score)

As duas gemas executam o mesmo script. O points da gema pequena é 10, e o da grande é 25; esses valores são definidos em cada nó da cena. Portanto, envie points, em vez de digitar um número.

challenge icon

Desafio

Fácil

Faça cada gema informar a main.gd quantos pontos ela vale.

  1. Declare signal collected(points) no início de gem.gd.
  2. No final de _on_body_entered, envie o sinal com os points da gema.

Pressione “Jogar” e passe por cima das duas gemas: o Console mostra Score: 10 e, em seguida, Score: 35. Depois, pressione “Verificar”.

Experimente você mesmo

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 as lições de Sinais e colisões

Pratique por conta própria: Playground de Godot