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ę.
Wyzwanie
ŁatwySpraw, by każdy klejnot informował main.gd, ile jest wart punktów.
- Zadeklaruj
signal collected(points)na początku plikugem.gd. - Na końcu funkcji
_on_body_enteredwyślij sygnał z wartościąpointsklejnotu.
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
2Sygnały
Obszary spotykają obszaryWłasny sygnałSygnały z wartościamiSygnał innego węzłaNasłuchuj swojego sygnałuPoćwicz samodzielnie: Edytor online Godot