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 beim Deklarieren in Klammern auf:
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 beträgt beim kleinen Edelstein 10 und beim großen 25; er wird für jeden Knoten im Inspektor festgelegt. Sende also points und keine Zahl, die du eingibst.
Aufgabe
EinfachLass jeden Edelstein main.gd mitteilen, wie viele Punkte er wert ist:
- Deklariere
signal collected(points)am Anfang vongem.gd. - Sende es am Ende von
_on_body_enteredmit denpointsdes Edelsteins.
Geh über beide Edelsteine. In der Konsole sollte erst Score: 10 und dann Score: 35 angezeigt werden.
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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Signale und Kollisionen
Übe selbstständig: Godot-Playground