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.

Переопределяемые функции

Класс Node в Godot предоставляет виртуальные функции, которые можно переопределить для обновления узлов в каждом кадре или при определенных событиях, например, когда они попадают в дерево сцены.

В этом документе представлены те из них, которые вы будете использовать чаще всего.

См. также

По сути, эти функции используют низкоуровневую систему уведомлений Godot. Подробнее о ней см. Уведомления Godot.

Помимо конструктора класса, инициализировать и получать узлы позволяют две функции: _enter_tree() и _ready().

Когда узел попадает в дерево сцены, он становится активным, и движок вызывает его метод _enter_tree(). Дочерние элементы этого узла могут ещё не быть частью активной сцены. Поскольку узлы можно удалять и добавлять заново в дерево сцены, эта функция может вызываться несколько раз в течение жизненного цикла узла.

В большинстве случаев вместо этого вы будете использовать _ready(). Эта функция вызывается только один раз за время существования узла, после _enter_tree(). _ready() гарантирует, что все дочерние элементы первыми вошли в дерево сцены, поэтому вы можете безопасно вызвать для них get_node().

См. также

Чтобы узнать больше о получении ссылок на узлы, прочитайте Узлы и экземпляры сцены.

Другой связанный обратный вызов — _exit_tree(), который движок вызывает каждый раз, когда узел собирается покинуть дерево сцены. Это может происходить при вызове Node.remove_child() или при освобождении узла.

# 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

Два виртуальных метода _process() и _physics_process() позволяют обновлять узел, каждый кадр и каждый кадр физики соответственно. Подробнее см. в специальной документации: Idle и Physics Processing.

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

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

Две другие важные встроенные функции обратного вызова узла — это Node._unhandled_input() и Node._input(), которые используются для получения и обработки отдельных событий ввода. Метод _unhandled_input() принимает каждое нажатие клавиши, щелчок мыши и т. д., которые ещё не были обработаны в функции обратного вызова _input() или в компоненте пользовательского интерфейса. Вы хотите использовать его для ввода в игровом процессе в целом. Функция обратного вызова _input() позволяет перехватывать и обрабатывать события ввода до того, как их получит _unhandled_input().

Дополнительную информацию о входных данных в Godot см. в разделе Input section.

# 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

Есть ещё несколько переопределяемых функций, например: Node._get_configuration_warnings(). Специализированные типы узлов предоставляют больше обратных вызовов, например: CanvasItem._draw() для программного рисования или Control._gui_input() для обработки щелчков и ввода на элементах пользовательского интерфейса.