Menu
CoddyTech
flag Pt iconPortuguêsdown icon

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 transportar valores, assim como body_entered transporta 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 valor de points da gema pequena é 10 e o da gema grande é 25, definidos em cada nó no Inspetor. Então, envie points, não um número digitado por você.

challenge icon

Desafio

Fácil

Faça com que cada gema informe a main.gd quantos pontos vale:

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

Passe por cima das duas gemas. O Console deve mostrar Score: 10 e, em seguida, Score: 35.

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
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Sinais e colisões

Pratique por conta própria: Playground de Godot