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 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.

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 am Ende von _on_body_entered das Signal mit den points des 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