Godot's Node class provides virtual functions you can override to update nodes every frame or on specific events, like when they enter the scene tree.
This document presents the ones you'll use most often.
Under the hood, these functions rely on Godot's low-level notifications system. To learn more about it, see Godot notifications.
Two functions allow you to initialize and get nodes, besides the class's
When the node enters the Scene Tree, it becomes active and the engine calls its
_enter_tree() method. That node's children may not be part of the active scene yet. As
you can remove and re-add nodes to the scene tree, this function may be called
multiple times throughout a node's lifetime.
Most of the time, you'll use
_ready() instead. This function is called only
once in a node's lifetime, after
_ready() ensures that all children
have entered the scene tree first, so you can safely call
get_node() on it.
To learn more about getting node references, read Nodes and scene instances.
Another related callback is
_exit_tree(), which the engine calls every time
a node exits the scene tree. This can be when you call Node.remove_child() or when you free a node.
The two virtual methods
_physics_process() allow you to
update the node, every frame and every physics frame respectively. For more
information, read the dedicated documentation:
Idle and Physics Processing.
Two more essential built-in node callback functions are
Node._input(), which you use to both receive
and process individual input events. The
_unhandled_input() method receives
every key press, mouse click, etc. that have not been handled already in an
_input() callback or in a user interface component. You want to use it for
gameplay input in general. The
_input() callback allows you to intercept and
process input events before
_unhandled_input() gets them.
To learn more about inputs in Godot, see the Input section.
There are some more overridable functions like Node._get_configuration_warning(). Specialized node types provide more callbacks like CanvasItem._draw() to draw programmatically or Control._gui_input() to handle clicks and input on UI elements.