Signale mit Werten
Teil des Abschnitts Signale und Kollisionen der Godot-Journey von Coddy. Lektion 8 von 27.
Ein Signal kann Werte übertragen, so wie body_entered den Körper überträgt. Liste sie in Klammern auf, wenn du das Signal deklarierst:
signal collected(points)Übergib die Werte an emit() und zwar in derselben Reihenfolge:
collected.emit(points)Jede mit collected verbundene Funktion erhält den Wert. Hier addiert das Skript auf Main die Punkte zum Punktestand und gibt ihn aus:
func _on_gem_collected(points):
score += points
print("Score: ", score)Beide Edelsteine verwenden dasselbe Skript. Der Wert von points für den kleinen Edelstein ist 10 und für den großen 25; diese Werte sind bei jedem Knoten in der Szene festgelegt. Sende also points und keine Zahl, die du selbst eingibst.
Aufgabe
EinfachLass jeden Edelstein main.gd mitteilen, wie viele Punkte er wert ist.
- Deklariere
signal collected(points)am Anfang vongem.gd. - Sende am Ende von
_on_body_entereddas Signal mit denpointsdes Edelsteins.
Drücke „Spielen“ und gehe über beide Edelsteine: In der Konsole wird Score: 10 und dann Score: 35 angezeigt. Drücke danach „Prüfen“.
Probier es selbst
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
Alle Lektionen in Signale und Kollisionen
Übe selbstständig: Godot-Playground