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. Énumère-les entre parenthèses lors de sa déclaration :
signal collected(points)Transmets les valeurs à emit(), dans le même ordre :
collected.emit(points)Toutes les fonctions connectées à collected reçoivent la valeur. Ici, le script de 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 grosse gemme est 25 ; elles sont définies sur chaque nœud de la scène. Il faut donc transmettre 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.
Appuie sur « Jouer » et passe sur les deux gemmes : la console affiche Score: 10, puis Score: 35. Ensuite, appuie sur « Vérifier ».
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
Toutes les leçons de Signaux et collisions
Entraînez-vous par vous-même : Playground Godot