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ęzła Main dodaje punkty do wyniku i go wyświetla:

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; jest ustawiana dla każdego węzła w scenie. Dlatego przekaż points, a nie wpisaną przez siebie liczbę.

challenge icon

Wyzwanie

Łatwy

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

  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.

Naciśnij „Graj” i przejdź nad oboma klejnotami: w konsoli pojawi się Score: 10, a następnie Score: 35. Potem naciśnij „Sprawdź”.

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

Wszystkie lekcje w sekcji Sygnały i kolizje

Poćwicz samodzielnie: Edytor online Godot