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