Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Überschreibbare Funktionen

Die Node-Klasse von Godot bietet virtuelle Funktionen, die Sie überschreiben können, um Nodes in jedem Frame oder bei bestimmten Ereignissen zu aktualisieren, z.B. wenn sie den Szenenbaum betreten.

In diesem Dokument finden Sie die am häufigsten verwendeten.

Siehe auch

Unter der Haube basieren diese Funktionen auf Godots Low-Level-Benachrichtigungssystem. Um mehr darüber zu erfahren, siehe Benachrichtigungen in Godot.

Neben dem Konstruktor der Klasse gibt es zwei Funktionen, mit denen man Nodes initialisieren und darauf zugreifen kann: _enter_tree() und _ready().

Wenn der Node in den Szenenbaum eintritt, wird er aktiv und die Engine ruft seine Methode _enter_tree() auf. Die Child-Nodes dieses Nodes dürfen noch nicht Teil der aktiven Szene sein. Da Sie Knoten aus dem Szenenbaum entfernen und wieder hinzufügen können, kann diese Funktion während der Lebensdauer eines Nodes mehrere Male aufgerufen werden.

Die meiste Zeit werden Sie stattdessen _ready() verwenden. Diese Funktion wird nur einmal während der Lebensdauer eines Nodes aufgerufen, nach _enter_tree(). _ready() stellt sicher, daß alle Child-Nodes zuerst in den Szenenbaum eingetreten sind, so daß Sie get_node() sicher für sie aufrufen können.

Siehe auch

Weitere Informationen darüber, wie man Node-Referenzen erhält, finden Sie unter Nodes und Szeneninstanzen.

Ein weiterer verwandter Callback ist _exit_tree(), den die Engine jedes Mal aufruft, wenn ein Node im Begriff ist, den Szenenbaum zu verlassen. Das kann sein, wenn Sie Node.remove_child() aufrufen oder wenn Sie einen Node freigeben.

# Called every time the node enters the scene tree.
func _enter_tree():
    pass

# Called when both the node and its children have entered the scene tree.
func _ready():
    pass

# Called when the node is about to leave the scene tree, after all its
# children received the _exit_tree() callback.
func _exit_tree():
    pass

Die beiden virtuellen Methoden _process() und _physics_process() erlauben es, den Node, jeden Frame bzw. jeden Physik-Frame zu aktualisieren. Für weitere Informationen lesen Sie bitte die entsprechende Dokumentation: Leerlauf und Physik-Prozessierung.

# Called every frame.
func _process(delta):
    pass

# Called every physics frame.
func _physics_process(delta):
    pass

Zwei weitere wichtige Built-in-Node-Callback-Funktionen sind Node._unhandled_input() und Node._input(), die Sie verwenden, um einzelne Eingabe-Events zu empfangen und zu verarbeiten. Die Methode _unhandled_input() empfängt jeden Tastendruck, Mausklick usw., der nicht bereits in einem _input()-Callback oder in einer Komponente der Benutzeroberfläche behandelt wurde. Sie sollten diese Methode generell für Spieleingaben verwenden. Der _input()-Callback erlaubt es Ihnen, Eingabe-Events abzufangen und zu verarbeiten, bevor _unhandled_input() sie erhält.

Um mehr über Eingaben in Godot zu erfahren, lesen Sie bitte den Abschnitt über Eingaben.

# Called once for every event.
func _unhandled_input(event):
    pass

# Called once for every event before _unhandled_input(), allowing you to
# consume some events.
func _input(event):
    pass

Es gibt einige weitere überschreibbare Funktionen wie Node._get_configuration_warnings(). Spezialisierte Node-Typen bieten mehr Callbacks, wie CanvasItem._draw() um programmatisch zu zeichnen oder Control._gui_input() um Klicks und Eingaben auf UI-Elementen zu behandeln.