Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Lass jeden Edelstein main.gd mitteilen, wie viele Punkte er wert ist:

  1. Deklariere signal collected(points) am Anfang von gem.gd.
  2. Sende es am Ende von _on_body_entered mit den points des 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
quiz iconTeste dich selbst

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