Zeiger auf Node

Innerhalb eines Skriptes haben wir Zugriff auf alle Eigenschaften und Funktionen des Nodes an den das Skript angehängt ist. Wollen wir von hier auf Eigenschaften und Funktionen anderer Nodes zugreifen, benötigen wir einen Zeiger auf das jeweilige Node.

Befindet sich der Node am selben Zweig, eine Ebene tiefer, könnnen wir diesen mit seinem Namen, mit einem davor gestellten $ Zeichen ansprechen. Der Name entspricht der Bezeichnung aus dem Szenenbaum.

Durch einen Punkt getrennt, erfolgt der Zugriff auf die Eigenschaft oder Funktion.

$KinematicBody2D.move_and_collide(velocity)

Befindet sich das Node noch eine Ebene tiefer, so beschreiben wir den Weg und trennen die einzelnen Schritte mit /.

$TileMap/Sprite.position

Wollen wir auf ein Node auf der selben Ebene (Szenenbaum) zugreifen, müssen wir auf dem Path eine Stufe zurück. Hierbei muss der gesamte Path jedoch in Anführungszeichen stehen!

$"../Label".text = "Hallo Welt"

Alternative Schreibweise

Um sicherzustellen, dass das entsprechende Node bereits erzeugt wurde, schreiben wir onready vor die Variablendefinition.

onready var kind_node = get_node("Kind")

Die Funktion get_node() liefert einen Zeiger zum Node mit dem Namen „Kind“. Hierbei muss der Node sich aber eine Hierarchiestufe tiefer im Szenenbaum befinden. Noch tiefer angeordnete Nodes bedürfen der entsprechenden Path-Angabe beispielsweise „Kind/Enkel“

Das Eltern-Node erreicht man nicht über den jeweiligen Namen, sondern über „..“.

Alternativ gelangt man an das Eltern-Node mit get_parent()

Eine weitere Ebene höher gelangt man über get_node(„../..“).

onready var vater = get_parent()
# oder
onready var vater = get_node("..")
 
onready var opa = get_node("../..")

Um jetzt an die jeweiligen Variablen der Nodes zu gelangen, hängen wir dem Zeiger, mit einem Punkt getrennt, den entsprechenden Variablennamen an und gelangen so an dessen Wert.

vater.name

windy – 26.04.2019