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...
Funções sobrescrevíveis
A classe Node do Godot fornece funções virtuais que você pode sobrescrever para atualizar os nós a cada quadro ou em eventos específicos, como quando entram na árvore de cena.
Este documento apresenta as que você usará com mais frequência.
Ver também
Por baixo dos panos, essas funções dependem do sistema de notificações de baixo nível do Godot. Para saber mais sobre isso, veja Notificações em Godot.
Duas funções permitem inicializar e obter nós além do construtor da classe: _enter_tree() e _ready().
Quando o nó entra na Árvore de Cena, ele se torna ativo e a engine chama seu método _enter_tree(). Os filhos desse nó podem não fazer parte da cena ativa ainda. Como você pode remover e readicionar nós à árvore de cena, essa função pode ser chamada várias vezes ao longo da vida de um nó.
Na maioria das vezes, você usará _ready() em seu lugar. Essa função é chamada apenas uma vez na vida de um nó, após _enter_tree(). O _ready() garante que todos os filhos tenham entrado na árvore de cena primeiro, para que você possa chamar get_node() neles com segurança.
Ver também
Para saber mais sobre como obter referências de nós, leia Instâncias de nós e cenas.
Outro callback relacionado é o _exit_tree(), que a engine chama toda vez que um nó está prestes a sair da árvore de cena. Isso pode acontecer quando você chama Node.remove_child() ou quando libera um nó.
# 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();
}
Os dois métodos virtuais _process() e _physics_process() permitem que você atualize o nó, a cada quadro e a cada quadro de física, respectivamente. Para mais informações, leia a documentação dedicada: Processamento Ocioso e Físico.
# 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);
}
Mais duas funções de callback nativas e essenciais dos nós são Node._unhandled_input() e Node._input(), as quais você usa tanto para receber quanto para processar eventos de entrada individuais. O método _unhandled_input() recebe cada pressionamento de tecla, clique de mouse, etc., que já não tenha sido tratado em um callback _input() ou em um componente de interface de usuário. Geralmente você vai querer usá-lo para entradas de gameplay. O callback _input() permite interceptar e processar eventos de entrada antes que o _unhandled_input() os receba.
Para saber mais sobre entradas no Godot, veja a seção 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);
}
Existem mais algumas funções que podem ser sobrescritas, como Node._get_configuration_warnings(). Tipos de nós especializados fornecem mais callbacks, como CanvasItem._draw() para desenhar via programação ou Control._gui_input() para lidar com cliques e entradas em elementos de UI.