Menu
CoddyTech

Sygnały z wartościami

Część sekcji Sygnały i kolizje ścieżki Godot w Coddy. Lekcja 8 z 27.

Sygnał może przenosić wartości, tak jak body_entered przenosi ciało. Wymień je w nawiasach podczas deklarowania sygnału:

signal collected(points)

Przekaż wartości do emit() w tej samej kolejności:

collected.emit(points)

Każda funkcja połączona z collected otrzymuje tę wartość. Tutaj skrypt w Main dodaje punkty do wyniku i wyświetla go:

func _on_gem_collected(points):
	score += points
	print("Score: ", score)

Oba klejnoty uruchamiają ten sam skrypt. Wartość points małego klejnotu wynosi 10, a dużego 25. Ustawiono ją dla każdego węzła w Inspektorze. Przekazuj więc points, a nie wpisaną przez siebie liczbę.

challenge icon

Wyzwanie

Łatwy

Spraw, aby każdy klejnot informował main.gd, ile punktów jest wart:

  1. Zadeklaruj signal collected(points) na początku pliku gem.gd.
  2. Na końcu funkcji _on_body_entered wyślij sygnał z wartością points klejnotu.

Przejdź po obu klejnotach. Konsola powinna wyświetlić Score: 10, a następnie Score: 35.

Spróbuj swoich sił

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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Sygnały i kolizje

Poćwicz samodzielnie: Edytor online Godot