Signaux avec des valeurs
Fait partie de la section Signaux et collisions du Journey Godot de Coddy. Leçon 8 sur 27.
Un signal peut transporter des valeurs, comme body_entered transporte le corps. Liste-les entre crochets lorsque tu le déclares :
signal collected(points)Transmets les valeurs à emit(), dans le même ordre :
collected.emit(points)Chaque fonction connectée à collected reçoit la valeur. Ici, le script sur Main ajoute les points au score et l’affiche :
func _on_gem_collected(points):
score += points
print("Score: ", score)Les deux gemmes exécutent le même script. La valeur de points de la petite gemme est 10 et celle de la grande est 25 ; ces valeurs sont définies sur chaque nœud dans l’Inspecteur. Envoie donc points, et non un nombre que tu saisis directement.
Défi
FacileFais en sorte que chaque gemme indique à main.gd combien de points elle vaut :
- Déclare
signal collected(points)en haut degem.gd. - À la fin de
_on_body_entered, envoie-le avec lespointsde la gemme.
Passe sur les deux gemmes. La console devrait afficher Score: 10, puis Score: 35.
Essayez vous-même
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
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Signaux et collisions
Entraînez-vous par vous-même : Playground Godot