Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Funzioni sovrascrivibili
La classe Node di Godot fornisce funzioni virtuali che è possibile sovrascrivere per aggiornare i nodi a ogni frame o in base a eventi specifici, ad esempio quando entrano nell'albero di scene.
Questo documento presenta quelli che utilizzerai più spesso.
Vedi anche
In realtà, queste funzioni si basano sul sistema di notifiche di basso livello di Godot. Per saperne di più, consulta Notifiche di Godot.
Due funzioni consentono di inizializzare e ottenere nodi, oltre al costruttore della classe: _enter_tree() e _ready().
Quando il nodo entra nell'albero di scene, diventa attivo e il motore chiama il suo metodo _enter_tree(). I nodi figlio di quel nodo potrebbero non far ancora parte della scena attiva. Poiché è possibile rimuovere e riaggiungere nuovamente nodi all'albero di scene, questa funzione potrebbe essere richiamata più volte durante il ciclo di vita di un nodo.
La maggior parte delle volte, userai invece _ready(). Questa funzione viene chiamata solo una volta nel ciclo di vita di un nodo, dopo _enter_tree(). _ready() garantisce che tutti i nodi figlio siano entrati per primi nell'albero di scene, quindi puoi chiamare get_node() su di essi in tutta sicurezza.
Vedi anche
Per saperne di più su come ottenere riferimenti ai nodi, leggere Nodi e istanze di scene.
Un altro callback correlato è _exit_tree(), che il motore richiama ogni volta che un nodo sta per uscire dall'albero di scene. Questo può avvenire quando si chiama Node.remove_child() o quando si libera un nodo.
# 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
// Called every time the node enters the scene tree.
public override void _EnterTree()
{
base._EnterTree();
}
// Called when both the node and its children have entered the scene tree.
public override void _Ready()
{
base._Ready();
}
// Called when the node is about to leave the scene tree, after all its
// children.
public override void _ExitTree()
{
base._ExitTree();
}
I due metodi virtuali _process() e _physics_process() consentono di aggiornare il nodo, a ogni frame e a ogni frame di fisica, rispettivamente. Per maggiori informazioni, consulta la documentazione dedicata: Processo di inattività e di fisica.
# Called every frame.
func _process(delta):
pass
# Called every physics frame.
func _physics_process(delta):
pass
public override void _Process(double delta)
{
// Called every frame.
base._Process(delta);
}
public override void _PhysicsProcess(double delta)
{
// Called every physics frame.
base._PhysicsProcess(delta);
}
Altre due funzioni di callback integrate essenziali per i nodi sono Node._unhandled_input() e Node._input(), che servono sia per ricevere sia per elaborare i singoli eventi di input. Il metodo _unhandled_input() riceve ogni pressione di tasto, clic del mouse, ecc. che non siano già stati gestiti in un callback _input() o in un componente dell'interfaccia utente. È consigliabile utilizzarlo per gli input durante il gameplay in generale. Il callback _input() consente di intercettare ed elaborare gli eventi di input prima che siano ricevuti da _unhandled_input().
Per saperne di più sugli input in Godot, vedi la sezione Input.
# 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
// Called once for every event.
public override void _UnhandledInput(InputEvent @event)
{
base._UnhandledInput(@event);
}
// Called once for every event before _UnhandledInput(), allowing you to
// consume some events.
public override void _Input(InputEvent @event)
{
base._Input(@event);
}
Ci sono altre funzioni sovrascrivibili come Node._get_configuration_warnings(). I tipi di nodo specializzati forniscono più callback, come CanvasItem._draw() per disegnare tramite codice o Control._gui_input() per gestire clic e input sugli elementi dell'interfaccia utente.