Node

Наследует: Object

Наследуется от: AnimationMixer, AudioStreamPlayer, CanvasItem, CanvasLayer, EditorFileSystem, EditorPlugin, EditorResourcePreview, HTTPRequest, InstancePlaceholder, MissingNode, MultiplayerSpawner, MultiplayerSynchronizer, NavigationAgent2D, NavigationAgent3D, Node3D, ResourcePreloader, ShaderGlobalsOverride, StatusIndicator, Timer, Viewport, WorldEnvironment

Базовый класс для всех объектов.

Описание

Узлы — это строительные блоки Godot. Их можно назначать в качестве дочерних узлов другого узла, что приводит к древовидной структуре. Указанный узел может содержать любое количество узлов в качестве дочерних с требованием, чтобы все родственные элементы (прямые дочерние элементы узла) имели уникальные имена.

Дерево узлов называется сценой. Сцены можно сохранять на диске, а затем создавать экземпляры в других сценах. Это обеспечивает очень высокую гибкость в архитектуре и модели данных проектов Godot.

Scene tree: SceneTree содержит активное дерево узлов. Когда узел добавляется в дерево сцен, он получает уведомление NOTIFICATION_ENTER_TREE, и запускается его обратный вызов _enter_tree(). Дочерние узлы всегда добавляются после их родительского узла, т. е. обратный вызов _enter_tree() родительского узла будет запущен раньше, чем у его дочернего узла.

После добавления всех узлов в дерево сцены они получают уведомление NOTIFICATION_READY и запускаются их соответствующие обратные вызовы _ready(). Для групп узлов обратный вызов _ready() вызывается в обратном порядке, начиная с дочерних и продвигаясь к родительским узлам.

Это означает, что при добавлении узла в дерево сцены для обратных вызовов будет использоваться следующий порядок: _enter_tree() родителя, _enter_tree() дочерних узлов, _ready() дочерних узлов и, наконец, _ready() родителя (рекурсивно для всего дерева сцены).

Обработка: Узлы могут переопределять состояние «process», чтобы получать обратный вызов в каждом кадре, запрашивающий их обработку (что-либо сделать). Обычная обработка (callback _process(), переключаемая с помощью set_process()) происходит максимально быстро и зависит от частоты кадров, поэтому время обработки delta (в секундах) передается как аргумент. Обработка физики (callback _physics_process(), переключаемая с помощью set_physics_process()) происходит фиксированное количество раз в секунду (по умолчанию 60) и полезна для кода, связанного с физическим движком.

Узлы также могут обрабатывать входные события. При наличии функция _input() будет вызываться для каждого входного сигнала, который получает программа. Во многих случаях это может быть излишним (если только не используется для простых проектов), и функция _unhandled_input() может быть предпочтительнее; она вызывается, когда входное событие не было обработано никем другим (обычно узлами GUI Control), гарантируя, что узел получает только те события, которые ему предназначены.

Чтобы отслеживать иерархию сцен (особенно при создании экземпляров сцен в других сценах), можно задать «владельца» для узла с помощью свойства owner. Это отслеживает, кто что создал. Однако это в основном полезно при написании редакторов и инструментов.

Наконец, когда узел освобождается с помощью Object.free() или queue_free(), он также освобождает всех своих дочерних элементов.

Группы: Узлы можно добавлять в столько групп, сколько вам нужно, чтобы ими было легко управлять, вы можете создавать группы, например, «enemies» или «collectables», в зависимости от вашей игры. См. add_to_group(), is_in_group() и remove_from_group(). Затем вы можете извлекать все узлы в этих группах, перебирать их и даже вызывать методы для групп с помощью методов на SceneTree.

Сетевое взаимодействие с узлами: После подключения к серверу (или его создания, см. ENetMultiplayerPeer) можно использовать встроенную систему RPC (вызов удаленных процедур) для связи по сети. Вызывая rpc() с именем метода, он будет вызван локально и во всех подключенных одноранговых узлах (одноранговые узлы = клиенты и сервер, который принимает соединения). Чтобы определить, какой узел получает вызов RPC, Godot будет использовать свой NodePath (убедитесь, что имена узлов одинаковы на всех одноранговых узлах). Также ознакомьтесь с руководством по высокоуровневым сетям и соответствующими демонстрациями.

Примечание: Свойство script является частью класса Object, а не Node. Оно не отображается, как большинство свойств, но имеет сеттер и геттер (см. Object.set_script() и Object.get_script()).

Обучающие материалы

Свойства

AutoTranslateMode

auto_translate_mode

0

String

editor_description

""

MultiplayerAPI

multiplayer

StringName

name

Node

owner

PhysicsInterpolationMode

physics_interpolation_mode

0

ProcessMode

process_mode

0

int

process_physics_priority

0

int

process_priority

0

ProcessThreadGroup

process_thread_group

0

int

process_thread_group_order

BitField[ProcessThreadMessages]

process_thread_messages

String

scene_file_path

bool

unique_name_in_owner

false

Методы

void

_enter_tree() virtual

void

_exit_tree() virtual

PackedStringArray

_get_accessibility_configuration_warnings() virtual const

PackedStringArray

_get_configuration_warnings() virtual const

RID

_get_focused_accessibility_element() virtual const

void

_input(event: InputEvent) virtual

void

_physics_process(delta: float) virtual

void

_process(delta: float) virtual

void

_ready() virtual

void

_shortcut_input(event: InputEvent) virtual

void

_unhandled_input(event: InputEvent) virtual

void

_unhandled_key_input(event: InputEvent) virtual

void

add_child(node: Node, force_readable_name: bool = false, internal: InternalMode = 0)

void

add_sibling(sibling: Node, force_readable_name: bool = false)

void

add_to_group(group: StringName, persistent: bool = false)

String

atr(message: String, context: StringName = "") const

String

atr_n(message: String, plural_message: StringName, n: int, context: StringName = "") const

Variant

call_deferred_thread_group(method: StringName, ...) vararg

Variant

call_thread_safe(method: StringName, ...) vararg

bool

can_auto_translate() const

bool

can_process() const

Tween

create_tween()

Node

duplicate(flags: int = 15) const

Node

find_child(pattern: String, recursive: bool = true, owned: bool = true) const

Array[Node]

find_children(pattern: String, type: String = "", recursive: bool = true, owned: bool = true) const

Node

find_parent(pattern: String) const

RID

get_accessibility_element() const

Node

get_child(idx: int, include_internal: bool = false) const

int

get_child_count(include_internal: bool = false) const

Array[Node]

get_children(include_internal: bool = false) const

Array[StringName]

get_groups() const

int

get_index(include_internal: bool = false) const

Window

get_last_exclusive_window() const

int

get_multiplayer_authority() const

Node

get_node(path: NodePath) const

Array

get_node_and_resource(path: NodePath)

Node

get_node_or_null(path: NodePath) const

Variant

get_node_rpc_config() const

Array[int]

get_orphan_node_ids() static

Node

get_parent() const

NodePath

get_path() const

NodePath

get_path_to(node: Node, use_unique_path: bool = false) const

float

get_physics_process_delta_time() const

float

get_process_delta_time() const

bool

get_scene_instance_load_placeholder() const

SceneTree

get_tree() const

String

get_tree_string()

String

get_tree_string_pretty()

Viewport

get_viewport() const

Window

get_window() const

bool

has_node(path: NodePath) const

bool

has_node_and_resource(path: NodePath) const

bool

is_ancestor_of(node: Node) const

bool

is_displayed_folded() const

bool

is_editable_instance(node: Node) const

bool

is_greater_than(node: Node) const

bool

is_in_group(group: StringName) const

bool

is_inside_tree() const

bool

is_multiplayer_authority() const

bool

is_node_ready() const

bool

is_part_of_edited_scene() const

bool

is_physics_interpolated() const

bool

is_physics_interpolated_and_enabled() const

bool

is_physics_processing() const

bool

is_physics_processing_internal() const

bool

is_processing() const

bool

is_processing_input() const

bool

is_processing_internal() const

bool

is_processing_shortcut_input() const

bool

is_processing_unhandled_input() const

bool

is_processing_unhandled_key_input() const

void

move_child(child_node: Node, to_index: int)

void

notify_deferred_thread_group(what: int)

void

notify_thread_safe(what: int)

void

print_orphan_nodes() static

void

print_tree()

void

print_tree_pretty()

void

propagate_call(method: StringName, args: Array = [], parent_first: bool = false)

void

propagate_notification(what: int)

void

queue_accessibility_update()

void

queue_free()

void

remove_child(node: Node)

void

remove_from_group(group: StringName)

void

reparent(new_parent: Node, keep_global_transform: bool = true)

void

replace_by(node: Node, keep_groups: bool = false)

void

request_ready()

void

reset_physics_interpolation()

Error

rpc(method: StringName, ...) vararg

void

rpc_config(method: StringName, config: Variant)

Error

rpc_id(peer_id: int, method: StringName, ...) vararg

void

set_deferred_thread_group(property: StringName, value: Variant)

void

set_display_folded(fold: bool)

void

set_editable_instance(node: Node, is_editable: bool)

void

set_multiplayer_authority(id: int, recursive: bool = true)

void

set_physics_process(enable: bool)

void

set_physics_process_internal(enable: bool)

void

set_process(enable: bool)

void

set_process_input(enable: bool)

void

set_process_internal(enable: bool)

void

set_process_shortcut_input(enable: bool)

void

set_process_unhandled_input(enable: bool)

void

set_process_unhandled_key_input(enable: bool)

void

set_scene_instance_load_placeholder(load_placeholder: bool)

void

set_thread_safe(property: StringName, value: Variant)

void

set_translation_domain_inherited()

void

update_configuration_warnings()


Сигналы

child_entered_tree(node: Node) 🔗

Выдается, когда дочерний node входит в SceneTree, обычно потому, что этот узел вошел в дерево (см. tree_entered) или был вызван add_child().

Этот сигнал выдается после собственных NOTIFICATION_ENTER_TREE и tree_entered дочернего узла.


child_exiting_tree(node: Node) 🔗

Выдается, когда дочерний node собирается выйти из SceneTree, обычно потому что этот узел выходит из дерева (см. tree_exiting) или потому что дочерний node удаляется или освобождается.

Когда этот сигнал получен, дочерний node все еще доступен внутри дерева. Этот сигнал выдается после собственного tree_exiting и NOTIFICATION_EXIT_TREE дочернего узла.


child_order_changed() 🔗

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


editor_description_changed(node: Node) 🔗

Генерируется при изменении поля описания узла.


editor_state_changed() 🔗

Выдается при изменении атрибута узла, который имеет отношение к редактору. Выдается только в редакторе.


ready() 🔗

Вызывается, когда узел считается готовым, после вызова _ready().


renamed() 🔗

Выдается при изменении name узла, если узел находится внутри дерева.


replacing_by(node: Node) 🔗

Выдается, когда этот узел заменяется на node, см. replace_by().

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


tree_entered() 🔗

Выдается, когда узел входит в дерево.

Этот сигнал выдается после связанного NOTIFICATION_ENTER_TREE уведомления.


tree_exited() 🔗

Выдается после того, как узел выходит из дерева и больше не активен.

Этот сигнал выдается после связанного NOTIFICATION_EXIT_TREE уведомления.


tree_exiting() 🔗

Выдается, когда узел вот-вот выйдет из дерева. Узел все еще действителен. Таким образом, это правильное место для деинициализации (или «деструктора», если хотите).

Этот сигнал выдается после _exit_tree() узла и до связанной NOTIFICATION_EXIT_TREE.


Перечисления

enum ProcessMode: 🔗

ProcessMode PROCESS_MODE_INHERIT = 0

Наследует process_mode от родителя узла. Это значение по умолчанию для любого вновь созданного узла.

ProcessMode PROCESS_MODE_PAUSABLE = 1

Останавливает обработку, когда SceneTree.paused равен true. Это обратная PROCESS_MODE_WHEN_PAUSED операция и значение по умолчанию для корневого узла.

ProcessMode PROCESS_MODE_WHEN_PAUSED = 2

Обрабатывать только, когда SceneTree.paused равен true. Это обратная PROCESS_MODE_PAUSABLE.

ProcessMode PROCESS_MODE_ALWAYS = 3

Всегда обрабатывать. Продолжает обработку, игнорируя SceneTree.paused. Это обратная PROCESS_MODE_DISABLED.

ProcessMode PROCESS_MODE_DISABLED = 4

Никогда не обрабатывать. Полностью отключает обработку, игнорируя SceneTree.paused. Это обратная сторона PROCESS_MODE_ALWAYS.


enum ProcessThreadGroup: 🔗

ProcessThreadGroup PROCESS_THREAD_GROUP_INHERIT = 0

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

ProcessThreadGroup PROCESS_THREAD_GROUP_MAIN_THREAD = 1

Обработать этот узел (и дочерние узлы, настроенные на наследование) в основном потоке. См. process_thread_group для получения дополнительной информации.

ProcessThreadGroup PROCESS_THREAD_GROUP_SUB_THREAD = 2

Обработать этот узел (и дочерние узлы, настроенные на наследование) в подпотоке. Для получения дополнительной информации см. process_thread_group.


flags ProcessThreadMessages: 🔗

ProcessThreadMessages FLAG_PROCESS_THREAD_MESSAGES = 1

Позволяет этому узлу обрабатывать потоковые сообщения, созданные с помощью call_deferred_thread_group() непосредственно перед вызовом _process().

ProcessThreadMessages FLAG_PROCESS_THREAD_MESSAGES_PHYSICS = 2

Позволяет этому узлу обрабатывать потоковые сообщения, созданные с помощью call_deferred_thread_group() непосредственно перед вызовом _physics_process().

ProcessThreadMessages FLAG_PROCESS_THREAD_MESSAGES_ALL = 3

Позволяет этому узлу обрабатывать потоковые сообщения, созданные с помощью call_deferred_thread_group() непосредственно перед вызовом _process() или _physics_process().


enum PhysicsInterpolationMode: 🔗

PhysicsInterpolationMode PHYSICS_INTERPOLATION_MODE_INHERIT = 0

Наследует physics_interpolation_mode от родителя узла. Это значение по умолчанию для любого вновь созданного узла.

PhysicsInterpolationMode PHYSICS_INTERPOLATION_MODE_ON = 1

Включает интерполяцию физики для этого узла и для дочерних элементов, заданных как PHYSICS_INTERPOLATION_MODE_INHERIT. Это значение по умолчанию для корневого узла.

PhysicsInterpolationMode PHYSICS_INTERPOLATION_MODE_OFF = 2

Отключает интерполяцию физики для этого узла и для дочерних элементов, для которых задано значение PHYSICS_INTERPOLATION_MODE_INHERIT.


enum DuplicateFlags: 🔗

DuplicateFlags DUPLICATE_SIGNALS = 1

Дублируйте сигнальные соединения узла, которые связаны с флагом Object.CONNECT_PERSIST.

DuplicateFlags DUPLICATE_GROUPS = 2

Дублируйте группы узлов.

DuplicateFlags DUPLICATE_SCRIPTS = 4

Дублировать скрипт узла (также переопределяя дублированные дочерние скрипты, если это объединено с DUPLICATE_USE_INSTANTIATION).

DuplicateFlags DUPLICATE_USE_INSTANTIATION = 8

Дублировать с помощью PackedScene.instantiate(). Если узел взят из сцены, сохраненной на диске, повторно использует PackedScene.instantiate() в качестве основы для дублированного узла и его дочерних элементов.

DuplicateFlags DUPLICATE_INTERNAL_STATE = 16

Дублировать также несериализуемые переменные (т.е. без @GlobalScope.PROPERTY_USAGE_STORAGE).

DuplicateFlags DUPLICATE_DEFAULT = 15

Дублирование с использованием флагов по умолчанию. Эта константа полезна для добавления или удаления одного флага.

# Дублирование неэкспортируемых переменных.
var dupe = duplicate(DUPLICATE_DEFAULT | DUPLICATE_INTERNAL_STATE)

enum InternalMode: 🔗

InternalMode INTERNAL_MODE_DISABLED = 0

Узел не будет внутренним.

InternalMode INTERNAL_MODE_FRONT = 1

Узел будет помещен в начало дочерних узлов родителя, перед любым невнутренним узлом-братьем.

InternalMode INTERNAL_MODE_BACK = 2

Узел будет помещен в конец дочерних узлов родителя, после любого невнутреннего родственного узла.


enum AutoTranslateMode: 🔗

AutoTranslateMode AUTO_TRANSLATE_MODE_INHERIT = 0

Наследует auto_translate_mode от родителя узла. Это значение по умолчанию для любого вновь созданного узла.

AutoTranslateMode AUTO_TRANSLATE_MODE_ALWAYS = 1

Всегда автоматически переводить. Это обратная AUTO_TRANSLATE_MODE_DISABLED и значение по умолчанию для корневого узла.

AutoTranslateMode AUTO_TRANSLATE_MODE_DISABLED = 2

Никогда не переводить автоматически. Это противоположно AUTO_TRANSLATE_MODE_ALWAYS.

Для этого узла и его дочерних элементов, которым установлено значение AUTO_TRANSLATE_MODE_INHERIT, будет пропущен анализ строк для генерации шаблона перевода.


Константы

NOTIFICATION_ENTER_TREE = 10 🔗

Уведомление получено, когда узел входит в SceneTree. См. _enter_tree().

Это уведомление получено до связанного сигнала tree_entered.

NOTIFICATION_EXIT_TREE = 11 🔗

Уведомление, полученное, когда узел собирается выйти из SceneTree. См. _exit_tree().

Это уведомление получено после соответствующего сигнала tree_exiting.

Это уведомление отправляется в обратном порядке.

NOTIFICATION_MOVED_IN_PARENT = 12 🔗

Устарело: This notification is no longer sent by the engine. Use NOTIFICATION_CHILD_ORDER_CHANGED instead.

NOTIFICATION_READY = 13 🔗

Уведомление получено, когда узел готов. См. _ready().

NOTIFICATION_PAUSED = 14 🔗

Уведомление получено, когда узел приостановлен. См. process_mode.

NOTIFICATION_UNPAUSED = 15 🔗

Уведомление получено, когда узел снят с паузы. См. process_mode.

NOTIFICATION_PHYSICS_PROCESS = 16 🔗

Уведомление, полученное от дерева в каждом кадре физики, когда is_physics_processing() возвращает true. См. _physics_process().

NOTIFICATION_PROCESS = 17 🔗

Уведомление, полученное от дерева для каждого отрисованного кадра, когда is_processing() возвращает true. См. _process().

NOTIFICATION_PARENTED = 18 🔗

Уведомление получено, когда узел установлен как дочерний для другого узла (см. add_child() и add_sibling()).

Примечание: Это не означает, что узел вошел в SceneTree.

NOTIFICATION_UNPARENTED = 19 🔗

Уведомление получено, когда родительский узел вызывает remove_child() на этом узле.

Примечание: Это не означает, что узел вышел из SceneTree.

NOTIFICATION_SCENE_INSTANTIATED = 20 🔗

Уведомление получено только вновь созданным корневым узлом сцены, когда PackedScene.instantiate() завершен.

NOTIFICATION_DRAG_BEGIN = 21 🔗

Уведомление получено, когда начинается операция перетаскивания. Все узлы получают это уведомление, а не только перетаскиваемый.

Может быть вызвано либо перетаскиванием Control, который предоставляет данные перетаскивания (см. Control._get_drag_data()), либо использованием Control.force_drag().

Используйте Viewport.gui_get_drag_data() для получения перетаскиваемых данных.

NOTIFICATION_DRAG_END = 22 🔗

Получено уведомление, когда операция перетаскивания завершена.

Используйте Viewport.gui_is_drag_successful(), чтобы проверить, успешно ли перетаскивание.

NOTIFICATION_PATH_RENAMED = 23 🔗

Уведомление получено, когда name узла или одного из его предков name изменено. Это уведомление не получено, когда узел удален из SceneTree.

NOTIFICATION_CHILD_ORDER_CHANGED = 24 🔗

Уведомление получено при изменении списка дочерних узлов. Это происходит при добавлении, перемещении или удалении дочерних узлов.

NOTIFICATION_INTERNAL_PROCESS = 25 🔗

Уведомление, полученное от дерева для каждого отрисованного кадра, когда is_processing_internal() возвращает true.

NOTIFICATION_INTERNAL_PHYSICS_PROCESS = 26 🔗

Уведомление от дерева получено каждый физический кадр, когда is_physics_processing_internal() возвращает true.

NOTIFICATION_POST_ENTER_TREE = 27 🔗

Уведомление получено, когда узел входит в дерево, непосредственно перед тем, как может быть получено NOTIFICATION_READY. В отличие от последнего, оно отправляется каждый раз, когда узел входит в дерево, а не только один раз.

NOTIFICATION_DISABLED = 28 🔗

Уведомление получено, когда узел отключен. См. PROCESS_MODE_DISABLED.

NOTIFICATION_ENABLED = 29 🔗

Уведомление получено, когда узел снова включается после отключения. См. PROCESS_MODE_DISABLED.

NOTIFICATION_RESET_PHYSICS_INTERPOLATION = 2001 🔗

Уведомление получено при вызове reset_physics_interpolation() на узле или его предках.

NOTIFICATION_EDITOR_PRE_SAVE = 9001 🔗

Уведомление, полученное непосредственно перед сохранением сцены с узлом в редакторе. Это уведомление отправляется только в редакторе Godot и не будет появляться в экспортированных проектах.

NOTIFICATION_EDITOR_POST_SAVE = 9002 🔗

Уведомление, полученное сразу после сохранения сцены с узлом в редакторе. Это уведомление отправляется только в редакторе Godot и не будет появляться в экспортированных проектах.

NOTIFICATION_WM_MOUSE_ENTER = 1002 🔗

Уведомление получено, когда мышь попадает в окно.

Реализовано для встроенных окон и на настольных и веб-платформах.

NOTIFICATION_WM_MOUSE_EXIT = 1003 🔗

Уведомление получено, когда мышь покидает окно.

Реализовано для встроенных окон и на настольных и веб-платформах.

NOTIFICATION_WM_WINDOW_FOCUS_IN = 1004 🔗

Уведомление, полученное от ОС, когда фокусируется предок узла Window. Это может быть изменение фокуса между двумя окнами одного и того же экземпляра движка или с рабочего стола ОС или стороннего приложения на окно игры (в этом случае также принимается NOTIFICATION_APPLICATION_FOCUS_IN).

Узел Window получает это уведомление, когда он фокусируется.

NOTIFICATION_WM_WINDOW_FOCUS_OUT = 1005 🔗

Уведомление, полученное от ОС, когда предок узла Window расфокусирован. Это может быть изменение фокуса между двумя окнами одного и того же экземпляра движка или с окна игры на рабочий стол ОС или стороннее приложение (в этом случае также получено NOTIFICATION_APPLICATION_FOCUS_OUT).

Узел Window получает это уведомление, когда он расфокусирован.

NOTIFICATION_WM_CLOSE_REQUEST = 1006 🔗

Уведомление, полученное от ОС при отправке запроса на закрытие (например, закрытие окна кнопкой «Закрыть» или Alt + F4).

Реализовано на настольных платформах.

NOTIFICATION_WM_GO_BACK_REQUEST = 1007 🔗

Уведомление, полученное от ОС при отправке запроса на возврат (например, нажатие кнопки «Назад» на Android).

Реализовано только на Android.

NOTIFICATION_WM_SIZE_CHANGED = 1008 🔗

Уведомление получено при изменении размера окна.

Примечание: Это уведомление получает только узел Window с измененным размером, и оно не распространяется на дочерние узлы.

NOTIFICATION_WM_DPI_CHANGE = 1009 🔗

Уведомление от ОС при изменении масштаба точек на дюйм (DPI) экрана. Реализовано только на macOS.

NOTIFICATION_VP_MOUSE_ENTER = 1010 🔗

Уведомление получено, когда курсор мыши входит в видимую область Viewport, которая не перекрыта другими Control или Window, при условии, что его Viewport.gui_disable_input имеет значение false и независимо от того, находится ли он в данный момент в фокусе или нет.

NOTIFICATION_VP_MOUSE_EXIT = 1011 🔗

Уведомление получено, когда курсор мыши покидает видимую область Viewport, которая не перекрыта другими Control или Window, при условии, что его Viewport.gui_disable_input имеет значение false и независимо от того, находится ли он в данный момент в фокусе или нет.

NOTIFICATION_WM_POSITION_CHANGED = 1012 🔗

Полученное уведомление при перемещении окна.

NOTIFICATION_OS_MEMORY_WARNING = 2009 🔗

Уведомление от ОС, когда приложение превышает выделенную ему память.

Реализовано только на iOS.

NOTIFICATION_TRANSLATION_CHANGED = 2010 🔗

Уведомление получено, когда переводы могли измениться. Может быть вызвано изменением пользователем локали, изменением auto_translate_mode или когда узел входит в дерево сцены. Может использоваться для реагирования на изменения языка, например, для изменения строк пользовательского интерфейса на лету. Полезно при работе со встроенной поддержкой перевода, например Object.tr().

Примечание: Это уведомление получено вместе с NOTIFICATION_ENTER_TREE, поэтому, если вы создаете сцену, дочерние узлы еще не будут инициализированы. Вы можете использовать его для настройки переводов для этого узла, дочерних узлов, созданных из скрипта, или если вы хотите получить доступ к дочерним узлам, добавленным в редакторе, убедитесь, что узел готов, используя is_node_ready().

func _notification(what):
    if what == NOTIFICATION_TRANSLATION_CHANGED:
        if not is_node_ready():
            await ready # Дождитесь сигнала готовности.
        $Label.text = atr("%d Bananas") % banana_counter

NOTIFICATION_WM_ABOUT = 2011 🔗

Уведомление, полученное от ОС при отправке запроса на информацию «О программе».

Реализовано только на macOS.

NOTIFICATION_CRASH = 2012 🔗

Уведомление получено от обработчика сбоев Godot, когда движок вот-вот рухнет.

Реализовано на настольных платформах, если обработчик сбоев включен.

NOTIFICATION_OS_IME_UPDATE = 2013 🔗

Уведомление от операционной системы при обновлении механизма ввода (например, при изменении положения курсора IME или строки ввода).

Реализовано на настольных и веб-платформах.

NOTIFICATION_APPLICATION_RESUMED = 2014 🔗

Уведомление, полученное от ОС при возобновлении работы приложения.

Специально для платформ Android и iOS.

NOTIFICATION_APPLICATION_PAUSED = 2015 🔗

Уведомление, полученное от ОС, когда приложение приостановлено.

Специально для платформ Android и iOS.

Примечание: В iOS у вас есть всего около 5 секунд, чтобы завершить задачу, запущенную этим сигналом. Если вы превысите это время, iOS завершит приложение вместо того, чтобы приостановить его.

NOTIFICATION_APPLICATION_FOCUS_IN = 2016 🔗

Уведомление, полученное от ОС, когда приложение находится в фокусе, т. е. при изменении фокуса с рабочего стола ОС или стороннего приложения на любое открытое окно экземпляра Godot.

Реализовано на настольных и мобильных платформах.

NOTIFICATION_APPLICATION_FOCUS_OUT = 2017 🔗

Уведомление, полученное от ОС, когда приложение расфокусировано, т. е. при изменении фокуса с любого открытого окна экземпляра Godot на рабочий стол ОС или стороннее приложение.

Реализовано на настольных и мобильных платформах.

NOTIFICATION_TEXT_SERVER_CHANGED = 2018 🔗

Получено уведомление при изменении TextServer.

NOTIFICATION_ACCESSIBILITY_UPDATE = 3000 🔗

Уведомление получено, когда требуется обновление информации о доступности.

NOTIFICATION_ACCESSIBILITY_INVALIDATE = 3001 🔗

Уведомление получено, когда элементы доступности становятся недействительными. Все элементы доступности узла автоматически удаляются после получения этого сообщения, поэтому все существующие ссылки на такие элементы должны быть отброшены.


Описания свойств

AutoTranslateMode auto_translate_mode = 0 🔗

Определяет, следует ли автоматически изменять любой текст на его переведенную версию в зависимости от текущей локали (для таких узлов, как Label, RichTextLabel, Window и т. д.). Также определяет, следует ли анализировать строки узла для генерации шаблона перевода.

Примечание: Для корневого узла режим автоматического перевода также можно установить через ProjectSettings.internationalization/rendering/root_node_auto_translate.


String editor_description = "" 🔗

  • void set_editor_description(value: String)

  • String get_editor_description()

Необязательное описание узла. Оно будет отображаться как подсказка при наведении курсора на узел в доке сцены редактора.


MultiplayerAPI multiplayer 🔗

Экземпляр MultiplayerAPI, связанный с этим узлом. См. SceneTree.get_multiplayer().

Примечание: Переименование узла или перемещение его в дереве не переместит MultiplayerAPI на новый путь, вам придется обновить его вручную.


StringName name 🔗

Имя узла. Это имя должно быть уникальным среди сестринских узлов (других дочерних узлов того же родителя). При установке на имя существующего сестринского узла узел автоматически переименовывается.

Примечание: При изменении имени следующие символы будут заменены подчеркиванием: (. : @ / " %). В частности, символ @ зарезервирован для автоматически сгенерированных имен. См. также String.validate_node_name().


Node owner 🔗

  • void set_owner(value: Node)

  • Node get_owner()

The owner of this node. The owner must be an ancestor of this node. When packing the owner node in a PackedScene, all the nodes it owns are also saved with it. See also unique_name_in_owner.

Note: In the editor, nodes not owned by the scene root are usually not displayed in the Scene dock, and will not be saved. To prevent this, remember to set the owner after calling add_child().

Note: The owner needs to be the current scene root. See Instancing scenes in the documentation for more information.


PhysicsInterpolationMode physics_interpolation_mode = 0 🔗

Режим интерполяции физики для данного узла. Действует только в том случае, если ProjectSettings.physics/common/physics_interpolation или SceneTree.physics_interpolation имеет значение true.

По умолчанию узлы наследуют режим интерполяции физики от своего родителя. Это свойство может включать или отключать интерполяцию физики индивидуально для каждого узла, независимо от режима интерполяции физики их родителей.

Примечание: В некоторых типах узлов, таких как VehicleWheel3D, интерполяция физики отключена по умолчанию, поскольку они используют собственное решение.

Примечание: При телепортации узла в удалённое положение рекомендуется временно отключить интерполяцию с помощью reset_physics_interpolation() после перемещения узла. Это позволит избежать визуального перехода между старым и новым положением.


ProcessMode process_mode = 0 🔗

Поведение обработки узла. Чтобы проверить, может ли узел обрабатывать в текущем режиме, используйте can_process().


int process_physics_priority = 0 🔗

  • void set_physics_process_priority(value: int)

  • int get_physics_process_priority()

Аналогично process_priority, но для NOTIFICATION_PHYSICS_PROCESS, _physics_process() или NOTIFICATION_INTERNAL_PHYSICS_PROCESS.


int process_priority = 0 🔗

  • void set_process_priority(value: int)

  • int get_process_priority()

Порядок выполнения обратных вызовов процесса узла (_process(), NOTIFICATION_PROCESS и NOTIFICATION_INTERNAL_PROCESS). Узлы, приоритет которых ниже, вызывают обратные вызовы своего процесса в первую очередь, независимо от порядка дерева.


ProcessThreadGroup process_thread_group = 0 🔗

Установите группу потоков процесса для этого узла (в основном, получает ли он NOTIFICATION_PROCESS, NOTIFICATION_PHYSICS_PROCESS, _process() или _physics_process() (и внутренние версии) в основном потоке или в подпотоке.

По умолчанию группа потоков — PROCESS_THREAD_GROUP_INHERIT, что означает, что этот узел принадлежит к той же группе потоков, что и родительский узел. Группы потоков означают, что узлы в определенной группе потоков будут обрабатываться вместе, отдельно от других групп потоков (в зависимости от process_thread_group_order). Если установлено значение PROCESS_THREAD_GROUP_SUB_THREAD, эта группа потоков будет выполняться в подпотоке (не в основном потоке), в противном случае, если установлено значение PROCESS_THREAD_GROUP_MAIN_THREAD, она будет обрабатываться в основном потоке. Если есть не родительский или прародительский узел, для которого установлено значение, отличное от inheritage, узел будет принадлежать группе потоков по умолчанию. Эта группа по умолчанию будет обрабатываться в главном потоке, а ее порядок группы равен 0.

Во время обработки в подпотоке доступ к большинству функций в узлах за пределами группы потоков запрещен (и это приведет к ошибке в режиме отладки). Используйте Object.call_deferred(), call_thread_safe(), call_deferred_thread_group() и тому подобное для связи из групп потоков с основным потоком (или с другими группами потоков).

Чтобы лучше понять группы потоков процесса, идея заключается в том, что любой узел, установленный на любое другое значение, чем PROCESS_THREAD_GROUP_INHERIT, включит любые дочерние (и внучатые) узлы, установленные для наследования в его группу потоков процесса. Это означает, что обработка всех узлов в группе будет происходить вместе, в то же время, когда узел включает их.


int process_thread_group_order 🔗

  • void set_process_thread_group_order(value: int)

  • int get_process_thread_group_order()

Измените порядок групп потоков процесса. Группы с меньшим порядком будут обрабатываться до групп с большим порядком. Это полезно, когда большое количество узлов обрабатывается в подпотоке, а затем другая группа хочет собрать свой результат в главном потоке, например.


BitField[ProcessThreadMessages] process_thread_messages 🔗

Установите, будет ли текущая группа потоков обрабатывать сообщения (вызовы call_deferred_thread_group() в потоках), и хочет ли она получать их во время обычных процессов или обратных вызовов физических процессов.


String scene_file_path 🔗

  • void set_scene_file_path(value: String)

  • String get_scene_file_path()

Путь к файлу исходной сцены, если узел был создан из файла PackedScene. Только корневые узлы сцены содержат это.


bool unique_name_in_owner = false 🔗

  • void set_unique_name_in_owner(value: bool)

  • bool is_unique_name_in_owner()

Если true, к узлу можно получить доступ из любого узла, имеющего того же owner, или из самого owner, используя специальный синтаксис %Name в get_node().

Примечание: Если другой узел с тем же owner имеет то же name, что и этот узел, другой узел больше не будет доступен как уникальный.


Описания метода

void _enter_tree() virtual 🔗

Вызывается, когда узел входит в SceneTree (например, при создании экземпляра, смене сцены или после вызова add_child() в скрипте). Если у узла есть дочерние элементы, его обратный вызов _enter_tree() будет вызван первым, а затем обратный вызов дочерних элементов.

Соответствует уведомлению NOTIFICATION_ENTER_TREE в Object._notification().


void _exit_tree() virtual 🔗

Вызывается, когда узел собирается покинуть SceneTree (например, при освобождении, смене сцены или после вызова remove_child() в скрипте). Если у узла есть дочерние элементы, его обратный вызов _exit_tree() будет вызван последним, после того, как все его дочерние элементы покинут дерево.

Соответствует уведомлению NOTIFICATION_EXIT_TREE в Object._notification() и сигналу tree_exiting. Чтобы получить уведомление, когда узел уже покинул активное дерево, подключитесь к tree_exited.


PackedStringArray _get_accessibility_configuration_warnings() virtual const 🔗

Элементы в массиве, возвращаемые этим методом, отображаются как предупреждения в доке сцены, если скрипт, который его переопределяет, является скриптом tool, а предупреждения о доступности включены в настройках редактора.

Возврат пустого массива не приводит к появлению предупреждений.


PackedStringArray _get_configuration_warnings() virtual const 🔗

Элементы в массиве, возвращаемые этим методом, отображаются как предупреждения в доке сцены, если скрипт, который его переопределяет, является скриптом tool.

Возврат пустого массива не приводит к появлению предупреждений.

Вызовите update_configuration_warnings(), когда предупреждения необходимо обновить для этого узла.

@export var energy = 0:
    set(value):
        energy = value
        update_configuration_warnings()

func _get_configuration_warnings():
    if energy < 0:
        return ["Энергия должна быть равна 0 или больше."]
    else:
        return []

RID _get_focused_accessibility_element() virtual const 🔗

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


void _input(event: InputEvent) virtual 🔗

Вызывается при наличии события ввода. Событие ввода распространяется вверх по дереву узлов, пока узел не потребит его.

Вызывается только в том случае, если включена обработка ввода, что выполняется автоматически, если этот метод переопределен, и может быть переключено с помощью set_process_input().

Чтобы потребить событие ввода и остановить его дальнейшее распространение на другие узлы, можно вызвать Viewport.set_input_as_handled().

Для игрового ввода обычно лучше подходят _unhandled_input() и _unhandled_key_input(), поскольку они позволяют графическому интерфейсу сначала перехватывать события.

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


void _physics_process(delta: float) virtual 🔗

Вызывается один раз на каждом физическом тике и позволяет узлам синхронизировать свою логику с физическими тиками. delta — это логическое время между физическими тиками в секундах, равное Engine.time_scale / Engine.physics_ticks_per_second.

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

Обработка выполняется в порядке process_physics_priority, значения с более низким приоритетом вызываются первыми. Узлы с одинаковым приоритетом обрабатываются в порядке дерева, или сверху вниз, как показано в редакторе (также известно как предварительный обход).

Соответствует уведомлению NOTIFICATION_PHYSICS_PROCESS в Object._notification().

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

Примечание: Накопленное значение delta может отличаться от реального значения в секундах.


void _process(delta: float) virtual 🔗

Вызывается в каждом кадре бездействия, перед рендерингом и после обработки физических тиков. delta — это время между кадрами в секундах.

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

Обработка выполняется в порядке process_priority, значения с более низким приоритетом вызываются первыми. Узлы с одинаковым приоритетом обрабатываются в порядке дерева, или сверху вниз, как показано в редакторе (также известно как предварительный обход).

Соответствует уведомлению NOTIFICATION_PROCESS в Object._notification().

Примечание: Этот метод вызывается только в том случае, если узел присутствует в дереве сцены (т.е. не является «сиротой»).

Примечание: При возникновении проблем с движком и снижении частоты кадров значение delta увеличивается. При увеличении delta он ограничивается максимальным значением Engine.time_scale * Engine.max_physics_steps_per_frame / Engine.physics_ticks_per_second. В результате накопленное delta может не отражать реальное время.

Примечание: Если включен параметр --fixed-fps или движок работает в режиме Movie Maker (см. MovieWriter), значение delta всегда будет одинаковым для каждого кадра, независимо от времени, затраченного на рендеринг кадра.

Примечание: Дельта кадра может быть обработана с помощью OS.delta_smoothing, если эта функция включена для проекта.


void _ready() virtual 🔗

Вызывается, когда узел «готов», т. е. когда и узел, и его потомки вошли в дерево сцены. Если у узла есть потомки, их обратные вызовы _ready() срабатывают первыми, а родительский узел получит уведомление о готовности позже.

Соответствует уведомлению NOTIFICATION_READY в Object._notification(). См. также аннотацию @onready для переменных.

Обычно используется для инициализации. Для еще более ранней инициализации можно использовать Object._init(). См. также _enter_tree().

Примечание: Этот метод может быть вызван только один раз для каждого узла. После удаления узла из дерева сцены и его повторного добавления _ready() не будет вызван во второй раз. Это можно обойти, запросив другой вызов с помощью request_ready(), который может быть вызван в любом месте перед повторным добавлением узла.


void _shortcut_input(event: InputEvent) virtual 🔗

Вызывается, когда InputEventKey, InputEventShortcut или InputEventJoypadButton не были использованы _input() или любым элементом GUI Control. Вызывается до _unhandled_key_input() и _unhandled_input(). Событие ввода распространяется вверх по дереву узлов, пока узел не потребит его.

Вызывается только в том случае, если включена обработка сочетаний клавиш, что выполняется автоматически, если этот метод переопределен, и может быть переключено с помощью set_process_shortcut_input().

Чтобы использовать событие ввода и остановить его дальнейшее распространение на другие узлы, можно вызвать Viewport.set_input_as_handled().

Этот метод можно использовать для обработки сочетаний клавиш. Для общих событий GUI используйте вместо этого _input(). События игрового процесса обычно следует обрабатывать с помощью _unhandled_input() или _unhandled_key_input().

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


void _unhandled_input(event: InputEvent) virtual 🔗

Вызывается, когда InputEvent не был использован _input() или любым элементом GUI Control. Он вызывается после _shortcut_input() и после _unhandled_key_input(). Событие ввода распространяется вверх по дереву узлов, пока узел не использует его.

Он вызывается только в том случае, если включена обработка необработанного ввода, что выполняется автоматически, если этот метод переопределен, и может быть переключено с помощью set_process_unhandled_input().

Чтобы использовать событие ввода и остановить его дальнейшее распространение на другие узлы, можно вызвать Viewport.set_input_as_handled().

Для игрового ввода этот метод обычно подходит лучше, чем _input(), так как событиям GUI требуется более высокий приоритет. Для сочетаний клавиш рассмотрите возможность использования _shortcut_input(), так как он вызывается перед этим методом. Наконец, для обработки событий клавиатуры рассмотрите возможность использования _unhandled_key_input() из соображений производительности.

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


void _unhandled_key_input(event: InputEvent) virtual 🔗

Вызывается, когда InputEventKey не был использован _input() или любым элементом GUI Control. Вызывается после _shortcut_input(), но до _unhandled_input(). Событие ввода распространяется вверх по дереву узлов, пока узел не потребит его.

Вызывается только в том случае, если включена обработка необработанного ввода клавиш, что выполняется автоматически, если этот метод переопределен, и может быть переключено с помощью set_process_unhandled_key_input().

Чтобы использовать событие ввода и остановить его дальнейшее распространение на другие узлы, можно вызвать Viewport.set_input_as_handled().

Этот метод можно использовать для обработки ввода символов Unicode с модификаторами Alt, Alt + Ctrl и Alt + Shift после обработки сочетаний клавиш.

Для игрового ввода этот и _unhandled_input() обычно подходят лучше, чем _input(), так как события GUI должны обрабатываться в первую очередь. Этот метод также работает лучше, чем _unhandled_input(), так как несвязанные события, такие как InputEventMouseMotion, автоматически фильтруются. Для сочетаний клавиш рассмотрите возможность использования _shortcut_input().

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


void add_child(node: Node, force_readable_name: bool = false, internal: InternalMode = 0) 🔗

Добавляет дочерний node. Узлы могут иметь любое количество дочерних узлов, но каждый дочерний узел должен иметь уникальное имя. Дочерние узлы автоматически удаляются при удалении родительского узла, поэтому всю сцену можно удалить, удалив ее самый верхний узел.

Если force_readable_name равно true, улучшается читаемость добавленного node. Если не указано имя, node переименовывается в свой тип, и если он разделяет name с родственным узлом, то добавляется более подходящий суффикс. Эта операция очень медленная. Поэтому рекомендуется оставить это false, что присваивает фиктивное имя с @ в обеих ситуациях.

Если internal отличается от INTERNAL_MODE_DISABLED, дочерний узел будет добавлен как внутренний узел. Эти узлы игнорируются такими методами, как get_children(), если только их параметр include_internal не равен true. Он также предотвращает дублирование этих узлов с их родителем. Предполагаемое использование — скрыть внутренние узлы от пользователя, чтобы пользователь случайно не удалил или не изменил их. Используется некоторыми узлами GUI, например ColorPicker.

Примечание: Если у node уже есть родитель, этот метод не сработает. Сначала используйте remove_child(), чтобы удалить node из его текущего родителя. Например:

var child_node = get_child(0)
if child_node.get_parent():
    child_node.get_parent().remove_child(child_node)
add_child(child_node)

Если вам нужно, чтобы дочерний узел был добавлен под определенным узлом в списке дочерних узлов, используйте add_sibling() вместо этого метода.

Примечание: Если вы хотите, чтобы дочерний узел сохранялся в PackedScene, вы должны установить owner в дополнение к вызову add_child(). Это обычно актуально для скриптов инструментов и плагинов редактора. Если add_child() вызывается без установки owner, недавно добавленный Node не будет виден в дереве сцены, хотя он будет виден в 2D/3D-виде.


void add_sibling(sibling: Node, force_readable_name: bool = false) 🔗

Добавляет узел sibling к родительскому узлу этого узла и перемещает добавленный сестринский узел прямо под этот узел.

Если force_readable_name равно true, улучшается читаемость добавленного sibling. Если не указано, sibling переименовывается в свой тип, и если он разделяет name с сестринским узлом, то добавляется более подходящий суффикс. Эта операция очень медленная. Поэтому рекомендуется оставить это false, что присваивает фиктивное имя с @ в обеих ситуациях.

Используйте add_child() вместо этого метода, если вам не нужно, чтобы дочерний узел добавлялся под определенный узел в списке дочерних узлов.

Примечание: Если этот узел является внутренним, добавленный родственный узел также будет внутренним (см. параметр internal add_child()).


void add_to_group(group: StringName, persistent: bool = false) 🔗

Добавляет узел в группу group. Группы могут быть полезны для организации подмножества узлов, например, "enemies" или "collectables". См. примечания в описании и методы групп в SceneTree.

Если persistent имеет значение true, группа будет сохранена при сохранении внутри PackedScene. Все группы, созданные и отображаемые в панели «Группы», являются постоянными.

Примечание: Для повышения производительности порядок имен групп не гарантируется и может меняться между запусками проекта. Поэтому не полагайтесь на порядок групп.

Примечание: Методы групп SceneTree не будут работать с этим узлом, если он не находится внутри дерева (см. is_inside_tree()).


String atr(message: String, context: StringName = "") const 🔗

Переводит message, используя каталоги перевода, настроенные в настройках проекта. Для помощи с переводом можно указать дополнительный context. Обратите внимание, что большинство узлов Control автоматически переводят свои строки, поэтому этот метод в основном полезен для форматированных строк или пользовательского нарисованного текста.

Этот метод работает так же, как Object.tr(), с добавлением соблюдения состояния auto_translate_mode.

Если Object.can_translate_messages() равен false или перевод недоступен, этот метод возвращает message без изменений. См. Object.set_message_translation().

Подробные примеры см. в Интернационализация игр.


String atr_n(message: String, plural_message: StringName, n: int, context: StringName = "") const 🔗

Переводит message или plural_message, используя каталоги перевода, настроенные в настройках проекта. Для помощи с переводом можно указать дополнительный context.

Этот метод работает так же, как Object.tr_n(), с добавлением соблюдения состояния auto_translate_mode.

Если Object.can_translate_messages() имеет значение false или перевод недоступен, этот метод возвращает message или plural_message без изменений. См. Object.set_message_translation().

n — это номер или количество темы сообщения. Он используется системой перевода для получения правильной формы множественного числа для текущего языка.

Подробные примеры см. в Локализация с использованием gettext.

Примечание: Отрицательные и float числа могут некорректно применяться к некоторым исчисляемым субъектам. Рекомендуется обрабатывать такие случаи с помощью atr().


Variant call_deferred_thread_group(method: StringName, ...) vararg 🔗

Эта функция похожа на Object.call_deferred(), за исключением того, что вызов будет иметь место, когда обрабатывается группа потоков узла. Если группа потоков узла обрабатывается в подпотоках, то вызов будет сделан в этом потоке, прямо перед вызовом NOTIFICATION_PROCESS или NOTIFICATION_PHYSICS_PROCESS, _process() или _physics_process() или их внутренних версий.


Variant call_thread_safe(method: StringName, ...) vararg 🔗

Эта функция гарантирует, что вызов этой функции будет успешным, независимо от того, выполняется ли он из потока или нет. Если он вызван из потока, которому не разрешено вызывать функцию, вызов станет отложенным. В противном случае вызов будет выполнен напрямую.


bool can_auto_translate() const 🔗

Возвращает true, если этот узел может автоматически переводить сообщения в зависимости от текущей локали. См. auto_translate_mode, atr() и atr_n().


bool can_process() const 🔗

Возвращает true, если узел может получать уведомления об обработке и обратные вызовы ввода (NOTIFICATION_PROCESS, _input() и т. д.) из SceneTree и Viewport. Возвращаемое значение зависит от process_mode:

  • Если установлено значение PROCESS_MODE_PAUSABLE, возвращает true, когда игра обрабатывается, т. е. SceneTree.paused равно false;

  • Если установлено значение PROCESS_MODE_WHEN_PAUSED, возвращает true, когда игра приостановлена, т. е. SceneTree.paused равно true;

  • Если установлено значение PROCESS_MODE_ALWAYS, всегда возвращает true;

  • Если установлено значение PROCESS_MODE_DISABLED, всегда возвращает false;

  • Если установлено значение PROCESS_MODE_INHERIT, используйте process_mode родительского узла для определения результата.

Если узел не находится внутри дерева, возвращает false независимо от значения process_mode.


Tween create_tween() 🔗

Создает новый Tween и привязывает его к этому узлу.

Это эквивалентно выполнению:

get_tree().create_tween().bind_node(self)

Tween автоматически запустится на следующем кадре процесса или физическом кадре (в зависимости от TweenProcessMode). См. Tween.bind_node() для получения дополнительной информации о Tween, привязанных к узлам.

Примечание: Метод все еще можно использовать, когда узел не находится внутри SceneTree. Он может дать сбой в маловероятном случае использования пользовательского MainLoop.


Node duplicate(flags: int = 15) const 🔗

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

Примечание: Для узлов с прикрепленным Script, если Object._init() определен с обязательными параметрами, дублированный узел не будет иметь Script.

Примечание: По умолчанию этот метод будет дублировать только свойства, помеченные для сериализации (т. е. с использованием @GlobalScope.PROPERTY_USAGE_STORAGE или в GDScript @GDScript.@export). Если вы хотите дублировать все свойства, используйте DUPLICATE_INTERNAL_STATE.


Node find_child(pattern: String, recursive: bool = true, owned: bool = true) const 🔗

Находит первого потомка этого узла, чье name соответствует pattern, возвращая null, если совпадений не найдено. Сопоставление выполняется с именами узлов, не их путями, через String.match(). Таким образом, он чувствителен к регистру, "*" соответствует нулю или более символов, а "?" соответствует любому одному символу.

Если recursive равен false, проверяются только прямые потомки этого узла. Узлы проверяются в порядке дерева, поэтому сначала проверяется первый прямой потомок этого узла, затем его собственные прямые потомки и т. д., прежде чем перейти ко второму прямому потомку и т. д. Внутренние потомки также включаются в поиск (см. параметр internal в add_child()).

Если owned равен true, проверяются только потомки с допустимым узлом owner.

Примечание: Этот метод может быть очень медленным. Рассмотрите возможность сохранения ссылки на найденный узел в переменной. В качестве альтернативы используйте get_node() с уникальными именами (см. unique_name_in_owner).

Примечание: Чтобы найти все узлы-потомки, соответствующие шаблону или типу класса, см. find_children().


Array[Node] find_children(pattern: String, type: String = "", recursive: bool = true, owned: bool = true) const 🔗

Находит всех потомков этого узла, имена которых соответствуют pattern, возвращая пустой Array, если совпадений не найдено. Сопоставление выполняется по именам узлов, не их путям, через String.match(). Таким образом, он чувствителен к регистру, "*" соответствует нулю или более символов, а "?" соответствует любому одному символу.

Если type не пуст, включаются только предки, наследующие от type (см. Object.is_class()).

Если recursive равен false, проверяются только прямые потомки этого узла. Узлы проверяются в порядке дерева, поэтому сначала проверяется первый прямой потомок этого узла, затем его собственные прямые потомки и т. д., прежде чем перейти ко второму прямому потомку и т. д. Внутренние потомки также включаются в поиск (см. параметр internal в add_child()).

Если owned равен true, проверяются только потомки с допустимым узлом owner.

Примечание: Этот метод может быть очень медленным. Рассмотрите возможность сохранения ссылок на найденные узлы в переменной.

Примечание: Чтобы найти один узел-потомок, соответствующий шаблону, см. find_child().


Node find_parent(pattern: String) const 🔗

Находит первого предка этого узла, чье name соответствует pattern, возвращая null, если совпадений не найдено. Сопоставление выполняется с помощью String.match(). Таким образом, он чувствителен к регистру, "*" соответствует нулю или более символов, а "?" соответствует любому отдельному символу. См. также find_child() и find_children().

Примечание: Поскольку этот метод идет вверх по дереву сцены, он может быть медленным в больших, глубоко вложенных узлах. Рассмотрите возможность сохранения ссылки на найденный узел в переменной. В качестве альтернативы используйте get_node() с уникальными именами (см. unique_name_in_owner()).


RID get_accessibility_element() const 🔗

Возвращает основной элемент доступности RID.

Примечание: Этот метод следует вызывать только во время обновлений информации о доступности (NOTIFICATION_ACCESSIBILITY_UPDATE).


Node get_child(idx: int, include_internal: bool = false) const 🔗

Извлекает дочерний узел по его индексу. Каждый дочерний узел имеет индекс относительно своих братьев и сестер (см. get_index()). Первый дочерний узел имеет индекс 0. Отрицательные значения также могут использоваться для начала с конца списка. Этот метод можно использовать в сочетании с get_child_count() для итерации по дочерним узлам этого узла. Если по указанному индексу дочерний узел не существует, этот метод возвращает null и генерируется ошибка.

Если include_internal равен false, внутренние дочерние узлы игнорируются (см. параметр add_child() internal).

# Предположим, что следующие элементы являются дочерними элементами этого узла (по порядку):
# Первый, Средний, Последний.

var a = get_child(0).name  # a это "Первый"
var b = get_child(1).name  # b это "Средний"
var b = get_child(2).name  # b это "Последний"
var c = get_child(-1).name # c это "Последний"

Примечание: Чтобы получить узел по NodePath, используйте get_node().


int get_child_count(include_internal: bool = false) const 🔗

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

Если include_internal равен false, внутренние дочерние элементы не учитываются (см. параметр internal add_child()).


Array[Node] get_children(include_internal: bool = false) const 🔗

Возвращает все дочерние элементы этого узла внутри Array.

Если include_internal равен false, исключает внутренние дочерние элементы из возвращаемого массива (см. параметр internal add_child()).


Array[StringName] get_groups() const 🔗

Возвращает Array имен групп, в которые был добавлен узел.

Примечание: Для повышения производительности порядок имен групп не гарантирован и может меняться между запусками проекта. Поэтому не полагайтесь на порядок групп.

Примечание: Этот метод также может возвращать некоторые имена групп, начинающиеся с подчеркивания (_). Они используются движком внутри. Чтобы избежать конфликтов, не используйте пользовательские группы, начинающиеся с подчеркивания. Чтобы исключить внутренние группы, см. следующий фрагмент кода:

# Сохраняет только невнутренние группы узла (в виде массива StringNames).
var non_internal_groups = []
for group in get_groups():
    if not str(group).begins_with("_"):
        non_internal_groups.push_back(group)

int get_index(include_internal: bool = false) const 🔗

Возвращает порядок этого узла среди его братьев и сестер. Индекс первого узла — 0. См. также get_child().

Если include_internalfalse, возвращает индекс, игнорируя внутренние дочерние элементы. Первый, не внутренний дочерний элемент будет иметь индекс 0 (см. параметр add_child() internal).


Window get_last_exclusive_window() const 🔗

Возвращает Window, содержащее этот узел, или последний исключительный дочерний элемент в цепочке окон, начиная с того, которое содержит этот узел.


int get_multiplayer_authority() const 🔗

Возвращает идентификатор пира многопользовательского органа для этого узла. См. set_multiplayer_authority().


Node get_node(path: NodePath) const 🔗

Извлекает узел. NodePath может быть относительным путем (от этого узла) или абсолютным путем (от SceneTree.root) к узлу. Если path не указывает на допустимый узел, генерирует ошибку и возвращает null. Попытки доступа к методам возвращаемого значения приведут к ошибке "Попытка вызвать <method> для пустого экземпляра.".

Примечание: Извлечение по абсолютному пути работает только тогда, когда узел находится внутри дерева сцены (см. is_inside_tree()).

Пример: Предположим, что этот метод вызывается из узла Character внутри следующего дерева:

┖╴root
   ┠╴Character (Вы здесь!)
   ┃  ┠╴Sword
   ┃  ┖╴Backpack
   ┃     ┖╴Dagger
   ┠╴MyGame
   ┖╴Swamp
      ┠╴Alligator
      ┠╴Mosquito
      ┖╴Goblin

Следующие вызовы вернут действительный узел:

get_node("Sword")
get_node("Backpack/Dagger")
get_node("../Swamp/Alligator")
get_node("/root/MyGame")

Array get_node_and_resource(path: NodePath) 🔗

Извлекает узел и его наиболее вложенный ресурс, указанный в под имени NodePath. Возвращает Array размером 3, где:

  • Элемент 0 — это Node, или null, если не найден;

  • Элемент 1 — это последний вложенный в под имени Resource или null, если не найден;

  • Элемент 2 — это оставшийся NodePath, ссылающийся на существующее свойство, отличное от Resource (см. Object.get_indexed()).

Пример: Предположим, что дочернему элементу Member Sprite2D.texture присвоена AtlasTexture:

var a = get_node_and_resource("Area2D/Sprite2D")
print(a[0].name) # Выводит Sprite2D
print(a[1])      # Выводит <null>
print(a[2])      # Выводит ^""

var b = get_node_and_resource("Area2D/Sprite2D:texture:atlas")
print(b[0].name)        # Выводит Sprite2D
print(b[1].get_class()) # Выводит AtlasTexture
print(b[2])             # Выводит ^""

var c = get_node_and_resource("Area2D/Sprite2D:texture:atlas:region")
print(c[0].name)        # Выводит Sprite2D
print(c[1].get_class()) # Выводит AtlasTexture
print(c[2])             # Выводит ^":region"

Node get_node_or_null(path: NodePath) const 🔗

Извлекает узел по NodePath. Аналогично get_node(), но не генерирует ошибку, если path не указывает на допустимый узел.


Variant get_node_rpc_config() const 🔗

Возвращает Dictionary, сопоставляющий имена методов с их конфигурацией RPC, определенной для этого узла, с помощью rpc_config().

Примечание: Этот метод возвращает только конфигурацию RPC, назначенную с помощью rpc_config(). См. Script.get_rpc_config(), чтобы получить RPC, определенным в Script.


Array[int] get_orphan_node_ids() static 🔗

Возвращает ID идентификаторы объектов всех узлов-сирот (узлов вне SceneTree). Используется для отладки.

Примечание: get_orphan_node_ids() работает только в отладочных сборках. При вызове в проекте, экспортированном в режиме выпуска, get_orphan_node_ids() вернет пустой массив.


Node get_parent() const 🔗

Возвращает родительский узел данного узла или null, если у узла нет родителя.


NodePath get_path() const 🔗

Возвращает абсолютный путь узла относительно SceneTree.root. Если узел не находится внутри дерева сцены, этот метод завершается ошибкой и возвращает пустой NodePath.


NodePath get_path_to(node: Node, use_unique_path: bool = false) const 🔗

Возвращает относительный NodePath от этого узла до указанного node. Оба узла должны находиться в одной и той же SceneTree или иерархии сцены, в противном случае этот метод завершается ошибкой и возвращает пустой NodePath.

Если use_unique_path равен true, возвращает кратчайший путь с учетом уникального имени этого узла (см. unique_name_in_owner).

Примечание: Если вы получаете относительный путь, который начинается с уникального узла, путь может быть длиннее обычного относительного пути из-за добавления имени уникального узла.


float get_physics_process_delta_time() const 🔗

Возвращает время, прошедшее (в секундах) с момента последнего обратного вызова физики. Это значение идентично параметру delta _physics_process() и часто является постоянным во время выполнения, если Engine.physics_ticks_per_second не изменен. См. также NOTIFICATION_PHYSICS_PROCESS.

Примечание: Возвращаемое значение будет больше ожидаемого, если частота кадров ниже, чем Engine.physics_ticks_per_second / Engine.max_physics_steps_per_frame FPS. Это делается для того, чтобы избежать сценариев «спирали смерти», когда производительность резко падает из-за постоянно растущего числа шагов физики на кадр. Такое поведение влияет как на _process(), так и на _physics_process(). В результате избегайте использования delta для измерения времени в реальных секундах. Вместо этого используйте для этой цели методы синглтона Time, например Time.get_ticks_usec().


float get_process_delta_time() const 🔗

Возвращает время, прошедшее (в секундах) с момента последнего обратного вызова процесса. Это значение идентично параметру delta _process() и может меняться от кадра к кадру. См. также NOTIFICATION_PROCESS.

Примечание: Возвращаемое значение будет больше ожидаемого, если частота кадров ниже, чем Engine.physics_ticks_per_second / Engine.max_physics_steps_per_frame FPS. Это делается для того, чтобы избежать сценариев «спирали смерти», когда производительность резко падает из-за постоянно растущего числа шагов физики на кадр. Такое поведение влияет как на _process(), так и на _physics_process(). В результате избегайте использования delta для измерения времени в реальных секундах. Вместо этого используйте для этой цели методы синглтона Time, например Time.get_ticks_usec().


bool get_scene_instance_load_placeholder() const 🔗

Возвращает true, если этот узел является заполнителем загрузки экземпляра. См. InstancePlaceholder и set_scene_instance_load_placeholder().


SceneTree get_tree() const 🔗

Возвращает SceneTree, содержащий этот узел. Если этот узел не находится внутри дерева, генерирует ошибку и возвращает null. См. также is_inside_tree().


String get_tree_string() 🔗

Возвращает дерево как String. Используется в основном для отладки. Эта версия отображает путь относительно текущего узла и подходит для копирования/вставки в функцию get_node(). Также может использоваться в игровом UI/UX.

Может выводить, например:

TheGame
TheGame/Menu
TheGame/Menu/Label
TheGame/Menu/Camera2D
TheGame/SplashScreen
TheGame/SplashScreen/Camera2D

String get_tree_string_pretty() 🔗

Подобно get_tree_string(), это возвращает дерево как String. Эта версия отображает более графическое представление, похожее на то, что отображается в Scene Dock. Это полезно для проверки больших деревьев.

Может печатать, например:

┖╴TheGame
   ┠╴Menu
   ┃  ┠╴Label
   ┃  ┖╴Camera2D
   ┖╴SplashScreen
      ┖╴Camera2D

Viewport get_viewport() const 🔗

Возвращает ближайшего предка Viewport узла, если узел находится внутри дерева. В противном случае возвращает null.


Window get_window() const 🔗

Возвращает Window, содержащее этот узел. Если узел находится в главном окне, это эквивалентно получению корневого узла (get_tree().get_root()).


bool has_node(path: NodePath) const 🔗

Возвращает true, если path указывает на допустимый узел. См. также get_node().


bool has_node_and_resource(path: NodePath) const 🔗

Возвращает true, если path указывает на допустимый узел, а его подимена указывают на допустимый Resource, например, Area2D/CollisionShape2D:shape. Свойства, которые не являются типами Resource (например, узлы или другие типы Variant), не рассматриваются. См. также get_node_and_resource().


bool is_ancestor_of(node: Node) const 🔗

Возвращает true, если заданный node является прямым или косвенным дочерним элементом этого узла.


bool is_displayed_folded() const 🔗

Возвращает true, если узел свёрнут в доке сцены. Этот метод предназначен для использования в плагинах и инструментах редактора. См. также set_display_folded().


bool is_editable_instance(node: Node) const 🔗

Возвращает true, если node имеет редактируемые дочерние элементы, включенные относительно этого узла. Этот метод предназначен для использования в плагинах и инструментах редактора. См. также set_editable_instance().


bool is_greater_than(node: Node) const 🔗

Возвращает true, если заданный node встречается позже в иерархии сцены, чем этот узел. Узел, встречающийся позже, обычно обрабатывается последним.


bool is_in_group(group: StringName) const 🔗

Возвращает true, если этот узел был добавлен в заданную group. См. add_to_group() и remove_from_group(). См. также примечания в описании и методы группы SceneTree.


bool is_inside_tree() const 🔗

Возвращает true, если этот узел в данный момент находится внутри SceneTree. См. также get_tree().


bool is_multiplayer_authority() const 🔗

Возвращает true, если локальная система является многопользовательским центром этого узла.


bool is_node_ready() const 🔗

Возвращает true, если узел готов, т. е. он находится внутри дерева сцены и все его дочерние элементы инициализированы.

request_ready() сбрасывает его обратно в false.


bool is_part_of_edited_scene() const 🔗

Возвращает true, если узел является частью сцены, открытой в данный момент в редакторе.


bool is_physics_interpolated() const 🔗

Возвращает true, если физическая интерполяция включена для этого узла (см. physics_interpolation_mode).

Примечание: Интерполяция будет активна только если и флаг установлен и физическая интерполяция включена в SceneTree. Это можно проверить с помощью is_physics_interpolated_and_enabled().


bool is_physics_interpolated_and_enabled() const 🔗

Возвращает true, если включена интерполяция физики (см. physics_interpolation_mode) и включена в SceneTree.

Это удобная версия is_physics_interpolated(), которая также проверяет, включена ли интерполяция физики глобально.

См. SceneTree.physics_interpolation и ProjectSettings.physics/common/physics_interpolation.


bool is_physics_processing() const 🔗

Возвращает true, если обработка физики включена (см. set_physics_process()).


bool is_physics_processing_internal() const 🔗

Возвращает true, если включена внутренняя обработка физики (см. set_physics_process_internal()).


bool is_processing() const 🔗

Возвращает true, если обработка включена (см. set_process()).


bool is_processing_input() const 🔗

Возвращает true, если узел обрабатывает входные данные (см. set_process_input()).


bool is_processing_internal() const 🔗

Возвращает true, если включена внутренняя обработка (см. set_process_internal()).


bool is_processing_shortcut_input() const 🔗

Возвращает true, если узел обрабатывает сочетания клавиш (см. set_process_shortcut_input()).


bool is_processing_unhandled_input() const 🔗

Возвращает true, если узел обрабатывает необработанный ввод (см. set_process_unhandled_input()).


bool is_processing_unhandled_key_input() const 🔗

Возвращает true, если узел обрабатывает необработанный ввод с клавиатуры (см. set_process_unhandled_key_input()).


void move_child(child_node: Node, to_index: int) 🔗

Перемещает child_node в указанный индекс. Индекс узла — это порядок среди его братьев и сестер. Если to_index отрицательный, индекс отсчитывается с конца списка. См. также get_child() и get_index().

Примечание: Порядок обработки нескольких обратных вызовов движка (_ready(), _process() и т. д.) и уведомлений, отправленных через propagate_notification(), зависит от порядка дерева. Узлы CanvasItem также отображаются в порядке дерева. См. также process_priority.


void notify_deferred_thread_group(what: int) 🔗

Аналогично call_deferred_thread_group(), но для уведомлений.


void notify_thread_safe(what: int) 🔗

Аналогично call_thread_safe(), но для уведомлений.


void print_orphan_nodes() static 🔗

Выводит все осиротевшие узлы (узлы вне SceneTree). Полезно для отладки.

Примечание: Этот метод работает только в отладочных сборках. Он ничего не делает в проекте, экспортированном в режиме выпуска.


void print_tree() 🔗

Выводит узел и его дочерние элементы на консоль рекурсивно. Узел не обязательно должен находиться внутри дерева. Этот метод выводит NodePath относительно этого узла и подходит для копирования/вставки в get_node(). См. также print_tree_pretty().

Может выводить, например:

.
Menu
Menu/Label
Menu/Camera2D
SplashScreen
SplashScreen/Camera2D

void print_tree_pretty() 🔗

Выводит узел и его дочерние элементы на консоль, рекурсивно. Узел не обязательно должен находиться внутри дерева. Аналогично print_tree(), но графическое представление выглядит так, как отображается в редакторе Scene dock. Это полезно для проверки больших деревьев.

Например, может вывести:

┖╴TheGame
   ┠╴Menu
   ┃  ┠╴Label
   ┃  ┖╴Camera2D
   ┖╴SplashScreen
      ┖╴Camera2D

void propagate_call(method: StringName, args: Array = [], parent_first: bool = false) 🔗

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

Если parent_first равен true, метод сначала вызывается на этом узле, затем на всех его дочерних узлах. Если false, сначала вызываются методы дочерних узлов.


void propagate_notification(what: int) 🔗

Вызывает Object.notification() с what для данного узла и всех его дочерних узлов, рекурсивно.


void queue_accessibility_update() 🔗

Ставит в очередь обновление информации о доступности для этого узла.


void queue_free() 🔗

Ставит этот узел в очередь на удаление в конце текущего кадра. При удалении все его дочерние элементы также удаляются, и все ссылки на узел и его дочерние элементы становятся недействительными.

В отличие от Object.free(), узел не удаляется мгновенно, и к нему все еще можно получить доступ до удаления. Также безопасно вызывать queue_free() несколько раз. Используйте Object.is_queued_for_deletion(), чтобы проверить, будет ли узел удален в конце кадра.

Примечание: Узел будет освобожден только после завершения всех других отложенных вызовов. Использование этого метода не всегда то же самое, что и вызов Object.free() через Object.call_deferred().


void remove_child(node: Node) 🔗

Удаляет дочерний node. node вместе со своими дочерними элементами не удаляется. Чтобы удалить узел, см. queue_free().

Примечание: Когда этот узел находится внутри дерева, этот метод устанавливает owner удаленного node (или его потомков) в null, если их owner больше не является предком (см. is_ancestor_of()).


void remove_from_group(group: StringName) 🔗

Удаляет узел из заданной group. Ничего не делает, если узел не находится в group. См. также примечания в описании и методы группы SceneTree.


void reparent(new_parent: Node, keep_global_transform: bool = true) 🔗

Изменяет родителя этого Node на new_parent. Узел должен уже иметь родителя. Member owner узла сохраняется, если его владелец все еще доступен из нового местоположения (т. е. узел все еще является потомком нового родителя после операции).

Если keep_global_transform равен true, глобальное преобразование узла будет сохранено, если поддерживается. Node2D, Node3D и Control поддерживают этот аргумент (но Control сохраняет только позицию).


void replace_by(node: Node, keep_groups: bool = false) 🔗

Заменяет этот узел заданным node. Все дочерние элементы этого узла перемещаются в node.

Если keep_groups равно true, node добавляется в те же группы, в которых находится замененный узел (см. add_to_group()).

Предупреждение: Замененный узел удаляется из дерева, но он не удаляется сам. Чтобы предотвратить утечки памяти, сохраните ссылку на узел в переменной или используйте Object.free().


void request_ready() 🔗

Запрашивает вызов _ready() снова при следующем входе узла в дерево. Не немедленно вызывает _ready().

Примечание: Этот метод влияет только на текущий узел. Если дочерние элементы узла также должны запросить готовность, этот метод необходимо вызвать для каждого из них. Когда узел и его дочерние элементы снова входят в дерево, порядок обратных вызовов _ready() будет таким же, как обычно.


void reset_physics_interpolation() 🔗

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

Этот сбой можно предотвратить, вызвав этот метод, который временно отключает интерполяцию до завершения физического тика.

Уведомление NOTIFICATION_RESET_PHYSICS_INTERPOLATION будет получено узлом и всеми дочерними элементами рекурсивно.

Примечание: Эту функцию следует вызывать после перемещения узла, а не до него.


Error rpc(method: StringName, ...) vararg 🔗

Отправляет запрос на вызов удаленной процедуры для указанного method одноранговым узлам в сети (и локально), отправляя дополнительные аргументы методу, вызываемому RPC. Запрос на вызов будет получен только узлами с тем же NodePath, включая точно такое же name. Поведение зависит от конфигурации RPC для указанного method (см. rpc_config() и @GDScript.@rpc). По умолчанию методы не подвергаются RPC.

Может возвращать @GlobalScope.OK, если вызов успешен, @GlobalScope.ERR_INVALID_PARAMETER, если аргументы, переданные в method, не совпадают, @GlobalScope.ERR_UNCONFIGURED, если multiplayer узла не может быть извлечен (например, когда узел не находится внутри дерева), @GlobalScope.ERR_CONNECTION_ERROR, если соединение multiplayer недоступно.

Примечание: Вы можете безопасно использовать RPC на клиентах только после получения сигнала MultiplayerAPI.connected_to_server от MultiplayerAPI. Вам также необходимо отслеживать состояние соединения, либо по сигналам MultiplayerAPI, таким как MultiplayerAPI.server_disconnected, либо путем проверки (get_multiplayer().peer.get_connection_status() == CONNECTION_CONNECTED).


void rpc_config(method: StringName, config: Variant) 🔗

Изменяет конфигурацию RPC для указанного method. config должен быть либо null, чтобы отключить функцию (как по умолчанию), либо Dictionary, содержащий следующие записи:

  • rpc_mode: см. RPCMode;

  • transfer_mode: см. TransferMode;

  • call_local: если true, метод также будет вызван локально;

  • channel: int, представляющий канал для отправки RPC.

Примечание: В GDScript этот метод соответствует аннотации @GDScript.@rpc с различными переданными параметрами (@rpc(any), @rpc(authority)...). См. также учебник высокоуровневый многопользовательский режим.


Error rpc_id(peer_id: int, method: StringName, ...) vararg 🔗

Отправляет rpc() определенному одноранговому узлу, идентифицированному peer_id (см. MultiplayerPeer.set_target_peer()).

Может возвращать @GlobalScope.OK, если вызов успешен, @GlobalScope.ERR_INVALID_PARAMETER, если аргументы, переданные в method, не совпадают, @GlobalScope.ERR_UNCONFIGURED, если multiplayer узла не может быть извлечен (например, когда узел не находится внутри дерева), @GlobalScope.ERR_CONNECTION_ERROR, если соединение multiplayer недоступно.


void set_deferred_thread_group(property: StringName, value: Variant) 🔗

Аналогично call_deferred_thread_group(), но для настройки свойств.


void set_display_folded(fold: bool) 🔗

Если установлено значение true, узел отображается свернутым в Scene dock. В результате все его дочерние элементы скрыты. Этот метод предназначен для использования в плагинах и инструментах редактора, но он также работает в сборках релиза. См. также is_displayed_folded().


void set_editable_instance(node: Node, is_editable: bool) 🔗

Установите значение true, чтобы разрешить всем узлам, принадлежащим node, быть доступными и редактируемыми в доке сцены, даже если их owner не является корнем сцены. Этот метод предназначен для использования в плагинах и инструментах редактора, но он также работает в сборках релиза. См. также is_editable_instance().


void set_multiplayer_authority(id: int, recursive: bool = true) 🔗

Устанавливает многопользовательские полномочия узла на одноранговый узел с заданным одноранговым узлом id. Многопользовательские полномочия — это одноранговый узел, который имеет полномочия над узлом в сети. По умолчанию равно peer ID 1 (сервер). Полезно в сочетании с rpc_config() и MultiplayerAPI.

Если recursive равно true, заданный одноранговый узел рекурсивно устанавливается как полномочный для всех дочерних узлов этого узла.

Предупреждение: Это не автоматически реплицирует новые полномочия на другие одноранговые узлы. Это обязанность разработчика. Вы можете реплицировать информацию о новых полномочиях с помощью MultiplayerSpawner.spawn_function, RPC или MultiplayerSynchronizer. Кроме того, полномочия родителя не распространяются на вновь добавленные дочерние узлы.


void set_physics_process(enable: bool) 🔗

Если установлено значение true, включает обработку физики (фиксированная частота кадров). Когда узел обрабатывается, он получит NOTIFICATION_PHYSICS_PROCESS с фиксированным (обычно 60 FPS, см. Engine.physics_ticks_per_second для изменения) интервалом (и будет вызван обратный вызов _physics_process(), если он существует).

Примечание: Если _physics_process() переопределен, он будет автоматически включен перед вызовом _ready().


void set_physics_process_internal(enable: bool) 🔗

Если установлено значение true, включает внутреннюю физику для этого узла. Внутренняя обработка физики происходит изолированно от обычных вызовов _physics_process() и используется некоторыми узлами внутренне, чтобы гарантировать правильное функционирование, даже если узел приостановлен или обработка физики отключена для скриптинга (set_physics_process()).

Предупреждение: Встроенные узлы полагаются на внутреннюю обработку для своей внутренней логики. Отключение ее небезопасно и может привести к неожиданному поведению. Используйте этот метод, если вы знаете, что делаете.


void set_process(enable: bool) 🔗

Если установлено значение true, включает обработку. Когда узел обрабатывается, он будет получать NOTIFICATION_PROCESS на каждом отрисованном кадре (и будет вызван обратный вызов _process(), если он существует).

Примечание: Если _process() переопределен, он будет автоматически включен до вызова _ready().

Примечание: Этот метод влияет только на обратный вызов _process(), т. е. он не влияет на другие обратные вызовы, такие как _physics_process(). Если вы хотите отключить всю обработку для узла, установите process_mode на PROCESS_MODE_DISABLED.


void set_process_input(enable: bool) 🔗

Если установлено значение true, включает обработку ввода.

Примечание: Если _input() переопределен, он будет автоматически включен до вызова _ready(). Обработка ввода также уже включена для элементов управления GUI, таких как Button и TextEdit.


void set_process_internal(enable: bool) 🔗

Если установлено значение true, включает внутреннюю обработку для этого узла. Внутренняя обработка происходит изолированно от обычных вызовов _process() и используется некоторыми узлами внутренне, чтобы гарантировать надлежащую работу, даже если узел приостановлен или обработка отключена для скриптинга (set_process()).

Предупреждение: Встроенные узлы полагаются на внутреннюю обработку для своей внутренней логики. Отключение ее небезопасно и может привести к неожиданному поведению. Используйте этот метод, если вы знаете, что делаете.


void set_process_shortcut_input(enable: bool) 🔗

Если установлено значение true, включает обработку сокращений для этого узла.

Примечание: Если _shortcut_input() переопределен, он будет автоматически включен перед вызовом _ready().


void set_process_unhandled_input(enable: bool) 🔗

Если установлено значение true, включается обработка необработанного ввода. Это позволяет узлу получать весь ввод, который ранее не был обработан (обычно Control).

Примечание: Если _unhandled_input() переопределен, он будет автоматически включен до вызова _ready(). Обработка необработанного ввода также уже включена для элементов управления GUI, таких как Button и TextEdit.


void set_process_unhandled_key_input(enable: bool) 🔗

Если установлено значение true, включается обработка необработанного ввода клавиш.

Примечание: Если _unhandled_key_input() переопределен, он будет автоматически включен перед вызовом _ready().


void set_scene_instance_load_placeholder(load_placeholder: bool) 🔗

Если установлено значение true, узел становится InstancePlaceholder при упаковке и создании экземпляра из PackedScene. См. также get_scene_instance_load_placeholder().


void set_thread_safe(property: StringName, value: Variant) 🔗

Аналогично call_thread_safe(), но для настройки свойств.


void set_translation_domain_inherited() 🔗

Делает так, чтобы этот узел наследовал домен перевода от своего родительского узла. Если у этого узла нет родителя, будет использоваться основной домен перевода.

Это поведение по умолчанию для всех узлов. Вызов Object.set_translation_domain() отключает это поведение.


void update_configuration_warnings() 🔗

Обновляет предупреждения, отображаемые для этого узла в доке сцены. Используйте _get_configuration_warnings() для настройки отображаемых предупреждающих сообщений.