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ê.
Desafio
FácilFaça com que cada gema informe a main.gd quantos pontos vale:
- Declare
signal collected(points)no início degem.gd. - No final de
_on_body_entered, emita o sinal com ospointsda 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
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