Object

Успадковано від: AudioServer, CameraServer, ClassDB, DisplayServer, EditorFileSystemDirectory, EditorInterface, EditorPaths, EditorSelection, EditorUndoRedoManager, EditorVCSInterface, Engine, EngineDebugger, FramebufferCacheRD, GDExtensionManager, Geometry2D, Geometry3D, Input, InputMap, IP, JavaClassWrapper, JavaScriptBridge, JNISingleton, JSONRPC, MainLoop, Marshalls, MovieWriter, NativeMenu, NavigationMeshGenerator, NavigationServer2D, NavigationServer3D, Node, OpenXRExtensionWrapper, OpenXRInteractionProfileMetadata, OS, Performance, PhysicsDirectBodyState2D, PhysicsDirectBodyState3D, PhysicsDirectSpaceState2D, PhysicsDirectSpaceState3D, PhysicsServer2D, PhysicsServer2DManager, PhysicsServer3D, PhysicsServer3DManager, PhysicsServer3DRenderingServerHandler, ProjectSettings, RefCounted, RenderData, RenderingDevice, RenderingServer, RenderSceneData, ResourceLoader, ResourceSaver, ResourceUID, ScriptLanguage, ShaderIncludeDB, TextServerManager, ThemeDB, TileData, Time, TranslationServer, TreeItem, UndoRedo, UniformSetCacheRD, WorkerThreadPool, XRServer, XRVRS

Базовий клас для всіх інших класів двигуна.

Опис

Розширений тип Variant. Усі класи в двигуні успадковуються від Object. Кожен клас може визначати нові властивості, методи або сигнали, які доступні для всіх успадкованих класів. Наприклад, екземпляр Sprite2D може викликати Node.add_child(), оскільки він успадковує Node.

Ви можете створювати нові екземпляри за допомогою Object.new() у GDScript або new GodotObject у C#.

Щоб видалити примірник Object, викличте free(). Це необхідно для більшості класів, які успадковують Object, тому що вони не керують пам’яттю самостійно, і в іншому випадку призведуть до витоків пам’яті, коли вони більше не використовуються. Є кілька класів, які виконують керування пам'яттю. Наприклад, RefCounted (і за розширенням Resource) видаляє себе, коли на нього більше не посилаються, а Node видаляє своїх дочірніх елементів, коли звільняється.

До об’єктів може бути прикріплений Script. Після того, як Script створено, він фактично діє як розширення базового класу, дозволяючи йому визначати та успадковувати нові властивості, методи та сигнали.

У Script _get_property_list() можна замінити, щоб налаштувати властивості кількома способами. Це дозволяє їм бути доступними для редактора, відображатися як списки параметрів, ділитися на групи, зберігати на диску тощо. Мови сценаріїв пропонують прості способи налаштування властивостей, наприклад, за допомогою анотації @GDScript.@export.

Godot дуже динамічний. Скрипт об’єкта, а отже, його властивості, методи та сигнали можна змінювати під час виконання. Через це можуть бути випадки, коли, наприклад, властивість, необхідна для методу, може не існувати. Щоб запобігти помилкам під час виконання, перегляньте такі методи, як set(), get(), call(), has_method(), has_signal() тощо. Зауважте, що ці методи набагато повільніші за прямі посилання.

У GDScript ви також можете перевірити, чи властивість, метод або ім’я сигналу існує в об’єкті за допомогою оператора in:

var node = Node.new()
print("name" in node) # Друкує true
print("get_parent" in node) # Виводить true
print("tree_entered" in node) # Виводить true
print("unknown" in node) # Виводить false

Сповіщення — це константи int, які зазвичай надсилаються й отримуються об’єктами. Наприклад, у кожному відтвореному кадрі SceneTree сповіщає вузли всередині дерева за допомогою Node.NOTIFICATION_PROCESS. Вузли отримують його та можуть викликати Node._process() для оновлення. Щоб скористатися сповіщеннями, перегляньте notification() і _notification().

Нарешті, кожен об’єкт також може містити метадані (дані про дані). set_meta() може бути корисним для зберігання інформації, від якої не залежить сам об’єкт. Щоб ваш код був чистим, не рекомендується надмірне використання метаданих.

Примітка: На відміну від посилань на RefCounted, посилання на об’єкт, що зберігається у змінній, можуть стати недійсними без встановлення значення null. Щоб перевірити, чи об’єкт видалено, не порівнюйте його з null. Натомість використовуйте @GlobalScope.is_instance_valid(). Також рекомендується успадкувати від RefCounted для класів, які зберігають дані замість Object.

Примітка: script не доступний, як більшість властивостей. Щоб встановити або отримати Script об’єкта в коді, використовуйте set_script() і get_script() відповідно.

Примітка: ** У логічному контексті **Object матиме значення false, якщо він дорівнює null або його було звільнено. В іншому випадку Object завжди матиме значення true. Дивіться також @GlobalScope.is_instance_valid().

Посібники

Методи

Variant

_get(property: StringName) virtual

Array[Dictionary]

_get_property_list() virtual

void

_init() virtual

Variant

_iter_get(iter: Variant) virtual

bool

_iter_init(iter: Array) virtual

bool

_iter_next(iter: Array) virtual

void

_notification(what: int) virtual

bool

_property_can_revert(property: StringName) virtual

Variant

_property_get_revert(property: StringName) virtual

bool

_set(property: StringName, value: Variant) virtual

String

_to_string() virtual

void

_validate_property(property: Dictionary) virtual

void

add_user_signal(signal: String, arguments: Array = [])

Variant

call(method: StringName, ...) vararg

Variant

call_deferred(method: StringName, ...) vararg

Variant

callv(method: StringName, arg_array: Array)

bool

can_translate_messages() const

void

cancel_free()

Error

connect(signal: StringName, callable: Callable, flags: int = 0)

void

disconnect(signal: StringName, callable: Callable)

Error

emit_signal(signal: StringName, ...) vararg

void

free()

Variant

get(property: StringName) const

String

get_class() const

Array[Dictionary]

get_incoming_connections() const

Variant

get_indexed(property_path: NodePath) const

int

get_instance_id() const

Variant

get_meta(name: StringName, default: Variant = null) const

Array[StringName]

get_meta_list() const

int

get_method_argument_count(method: StringName) const

Array[Dictionary]

get_method_list() const

Array[Dictionary]

get_property_list() const

Variant

get_script() const

Array[Dictionary]

get_signal_connection_list(signal: StringName) const

Array[Dictionary]

get_signal_list() const

StringName

get_translation_domain() const

bool

has_connections(signal: StringName) const

bool

has_meta(name: StringName) const

bool

has_method(method: StringName) const

bool

has_signal(signal: StringName) const

bool

has_user_signal(signal: StringName) const

bool

is_blocking_signals() const

bool

is_class(class: String) const

bool

is_connected(signal: StringName, callable: Callable) const

bool

is_queued_for_deletion() const

void

notification(what: int, reversed: bool = false)

void

notify_property_list_changed()

bool

property_can_revert(property: StringName) const

Variant

property_get_revert(property: StringName) const

void

remove_meta(name: StringName)

void

remove_user_signal(signal: StringName)

void

set(property: StringName, value: Variant)

void

set_block_signals(enable: bool)

void

set_deferred(property: StringName, value: Variant)

void

set_indexed(property_path: NodePath, value: Variant)

void

set_message_translation(enable: bool)

void

set_meta(name: StringName, value: Variant)

void

set_script(script: Variant)

void

set_translation_domain(domain: StringName)

String

to_string()

String

tr(message: StringName, context: StringName = &"") const

String

tr_n(message: StringName, plural_message: StringName, n: int, context: StringName = &"") const


Сигнали

property_list_changed() 🔗

Випромінюється, коли notify_property_list_changed() називається.


script_changed() 🔗

Увімкнено, коли змінено скрипт об’єкта.

Примітка: Коли цей сигнал видається, новий скрипт ще не ініціюється. Якщо вам необхідно отримати доступ до нового скрипту, з'єднання знеболюючим сигналом з CONNECT_DEFERRED.


Переліки

enum ConnectFlags: 🔗

ConnectFlags CONNECT_DEFERRED = 1

З'єднання знезабарвленими з'єднаннями спрацьовуються на час свічок (в кінці рами), а не миттєво.

ConnectFlags CONNECT_PERSIST = 2

Постійні з'єднання зберігаються, коли об'єкт послідовно (наприклад, при використанні PackedScene.pack()). У редакторі з'єднання, створених через Node dock завжди зберігаються.

ConnectFlags CONNECT_ONE_SHOT = 4

З'єднання з одним знімком відключають себе після емісії.

ConnectFlags CONNECT_REFERENCE_COUNTED = 8

З'єднання з обліковими записами можуть бути призначені для того ж з урахуванням декількох разів. Кожен відключення зменшує внутрішню протидію. Повністю відключається сигнал, коли лічильник досягає 0.

ConnectFlags CONNECT_APPEND_SOURCE_OBJECT = 16

Вихідний об'єкт автоматично прив'язується, коли створюється екземпляр PackedScene. Якщо цей біт прапорця увімкнено, вихідний об'єкт буде додано одразу після початкових аргументів сигналу.


Константи

NOTIFICATION_POSTINITIALIZE = 0 🔗

Повідомлення, отримане при ініціалізації об'єкта, перед його скриптом кріпиться. Використовується внутрішньо.

NOTIFICATION_PREDELETE = 1 🔗

Сповіщення отримано, коли об’єкт збирається видалити. Може використовуватися як деструктори в об'єктно-орієнтованих мовах програмування.

NOTIFICATION_EXTENSION_RELOADED = 2 🔗

Повідомлення отримано при обробці об'єкта гарячим перевантаженням. Це повідомлення надсилається тільки для занять розширеннями та отриманими.


Описи методів

Variant _get(property: StringName) virtual 🔗

Перевизначте цей метод, щоб налаштувати поведінку методу get(). Повинен повертати значення заданого параметра property або null, якщо параметр property має оброблятися звичайним способом.

У поєднанні з методом _set() та методом _get_property_list() цей метод дозволяє визначати власні властивості, що особливо корисно для плагінів редактора.

Примітка: Цей метод не викликається під час отримання вбудованих властивостей об'єкта, включаючи властивості, визначені за допомогою @GDScript.@export.

func _get(property):
    if property == "fake_property":
        print("Getting my property!")
        return 4

func _get_property_list():
    return [
        { "name": "fake_property", "type": TYPE_INT }
    ]

Array[Dictionary] _get_property_list() virtual 🔗

Перевизначте цей метод, щоб надати спеціальний список додаткових властивостей для обробки механізмом.

Має повертати список властивостей у вигляді Array словників. Результат додається до масиву get_property_list() і має бути відформатований таким же чином. Кожен Dictionary має містити принаймні записи ім’я і тип.

Ви можете використовувати _property_can_revert() і _property_get_revert(), щоб налаштувати значення за замовчуванням властивостей, доданих цим методом.

У наведеному нижче прикладі показано список чисел, показаних у вигляді слів від ZERO до FIVE, де number_count контролює розмір списку:

@tool
extends Node

@export var number_count = 3:
    set(nc):
        number_count = nc
        numbers.resize(number_count)
        notify_property_list_changed()

vae number = PackedInt32Array([0, 0, 0])

func _get_property_list():
    var properties = []

    for i in range (number_count):
        properties.append({
            "name": "number%d" % i,
            "type": TYPE_INT,
            "hint": PROPERTY_HINT_ENUM,
            "hint_string": "НУЛЬ, ОДИН, ДВА, ТРИ, ЧОТИРИ, П'ЯТЬ",
        })

    return properties

func _get(properties):
    if property.begins_with("number_"):
        var index = property.get_slice("_", 1).to_int()
        return number [index]

func _set(properties, valve):
    if property.begins_with("number_"):
        var index = property.get_slice("_", 1).to_int()
        number [index] = valve
        return true
    return false

Примітка. Цей метод призначений для розширених цілей. Для більшості ширених випадків використання мови сценаріїв пропонують прості способи обробки властивостей. Див. @GDScript.@export, @GDScript.@export_enum, @GDScript.@export_group тощо. Якщо ви хочете налаштувати експортовані властивості, використовуйте _validate_property().

Примітка: Якщо сценарієм об’єкта не є @GDScript.@tool, цей метод не буде викликано в редакторі.


void _init() virtual 🔗

Викликається, коли скрипт об'єкта миттєво, часто після того, як об'єкт ініціюється в пам'яті (через Object.new() в GDScript, або new GodotObject в C#). Також можна визначитися з параметрами. Цей метод схожий на конструктора у більшості мов програмування.

Примітка: Якщо _init() визначаються *параметри *, об'єкт з скриптом може бути створений безпосередньо. Якщо будь-які інші засоби (наприклад, PackedScene.instantiate() або Node.duplicate()) використовуються, ініціалізація скрипти не буде.


Variant _iter_get(iter: Variant) virtual 🔗

Повертає поточне ітероване значення. iter зберігає стан ітерації, але на відміну від _iter_init() та _iter_next(), стан має бути доступним лише для читання, тому немає обгортки Array.

Порада: У GDScript ви можете використовувати підтип Variant як тип повернення для _iter_get(). Вказаний тип буде використано для встановлення типу змінної ітератора в циклах for, що підвищує безпеку типів.


bool _iter_init(iter: Array) virtual 🔗

Ініціалізує ітератор. параметр ітерація зберігає стан ітерації. Оскільки GDScript не підтримує передачу аргументів за посиланням, як обгортка використовується масив з одного елемента. Повертає true, доки ітератор не досяг кінця.

class MyRange:
    var _from
    var _to

    func _init(from, to):
        assert(from <= to)
        _from = from
        _to = to

    func _iter_init(iter):
        iter[0] = _from
        return iter[0] < _to

    func _iter_next(iter):
        iter[0] += 1
        return iter[0] < _to

    func _iter_get(iter):
        return iter

func _ready():
    var my_range = MyRange.new(2, 5)
    for x in my_range:
        print(x) # Prints 2, 3, 4.

Примітка: Або ж ви можете ігнорувати параметр та використовувати стан об'єкта, див. онлайн-документація для прикладу. Зверніть увагу, що в цьому випадку ви не зможете повторно використовувати той самий екземпляр ітератора у вкладених циклах. Також переконайтеся, що ви скинули стан ітератора в цьому методі, якщо хочете використовувати один і той самий екземпляр кілька разів.


bool _iter_next(iter: Array) virtual 🔗

Переміщує ітератор до наступної ітерації. iter зберігає стан ітерації. Оскільки GDScript не підтримує передачу аргументів за посиланням, одноелементний масив використовується як оболонка. Повертає true, доки ітератор не досяг кінця.


void _notification(what: int) virtual 🔗

Викликається, коли об'єкт отримує сповіщення, яке можна ідентифікувати в what шляхом порівняння його з константою. Див. також notification().

func _notification(what):
    if what == NOTIFICATION_PREDELETE:
        print("Goodbye!")

Примітка: Базовий об'єкт Object визначає кілька сповіщень (NOTIFICATION_POSTINITIALIZE та NOTIFICATION_PREDELETE). Класи-успадкування, такі як Node, визначають набагато більше сповіщень, які також отримуються цим методом.

Примітка: На відміну від інших віртуальних методів, цей метод викликається автоматично для кожного скрипта, який його перевизначає. Це означає, що базову реалізацію не слід викликати через super у GDScript або його еквівалентах іншими мовами.


bool _property_can_revert(property: StringName) virtual 🔗

Надіславши цей метод, щоб налаштувати дана property зворотна поведінка. Поверніть true, якщо property має користувацьке значення за замовчуванням і ревертується в Inspector dock. Використовуйте _property_get_revert(), щоб вказати значення за замовчуванням property.

Примітка: Цей метод повинен постійно повертатися, незалежно від поточного значення property.


Variant _property_get_revert(property: StringName) virtual 🔗

Надіславши цей метод, щоб налаштувати дана property зворотна поведінка. Введіть номер мобільного, який Ви вказали при укладаннi договору з банком - для ідентифікації. Якщо значення за замовчуванням відрізняється від поточного значення property, значок перевернутого зображення відображається в Inspector dock.

Примітка: _property_can_revert() також повинен бути переданий для цього методу.


bool _set(property: StringName, value: Variant) virtual 🔗

Перевизначте цей метод, щоб налаштувати поведінку set(). Слід встановити властивість property на value та повернути true або false, якщо властивість property має оброблятися звичайним чином. Точний спосіб встановлення властивості properly залежить від реалізації цього методу.

У поєднанні з _get() та _get_property_list() цей метод дозволяє визначати власні властивості, що особливо корисно для плагінів редактора.

Примітка: Цей метод не викликається під час встановлення вбудованих властивостей об'єкта, включаючи властивості, визначені за допомогою @GDScript.@export.

var internal_data = {}

func _set(property, value):
    if property == "fake_property":
        # Зберігання значення у фальшивій властивості.
        internal_data["fake_property"] = value
        return true
    return false

func _get_property_list():
    return [
        { "name": "fake_property", "type": TYPE_INT }
    ]

String _to_string() virtual 🔗

Перевизначте цей метод, щоб налаштувати значення, що повертається to_string(), і, отже, представлення об’єкта як String.

func _to_string():
    return "Ласкаво просимо до Godot 4!"

func _init():
    print(self) # Виводить "Ласкаво просимо до Godot 4!"
    var a = str(self) # a це "Ласкаво просимо до Godot 4!"

void _validate_property(property: Dictionary) virtual 🔗

Перевизначте цей метод, щоб налаштувати наявні властивості. Усі відомості про властивості проходять через цей метод, за винятком властивостей, доданих за допомогою _get_property_list(). Вміст словника такий самий, як і в _get_property_list().

@tool
extends Node

@export var is_number_editable: bool:
    set(valve):
        is_number_editable = valve
        notify_property_list_changed()
@export var number: int

func _validate_property(property: Dictionary):
    if property.name == "number", and not is_number_editable:
        property.usage |= PROPERTY_USAGE_READ_ONLY

void add_user_signal(signal: String, arguments: Array = []) 🔗

Додає визначений користувачем сигнал під назвою signal. Необов’язкові аргументи для сигналу можна додати як Array словників, кожен з яких визначає ім’я String і тип int (див. Variant.Type). Дивіться також has_user_signal() і remove_user_signal().

add_user_signal("hurt", [
    { "name": "damage", "type": TYPE_INT },
    { "name": "source", "type": TYPE_OBJECT }
])

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

Викликає метод method на об'єкті і повертає результат. Цей метод підтримує змінну кількість аргументів, тому параметри можуть бути передані як окремий список коми.

var node = Node3D.new()
node.call("rotate", Vector3(1.0, 0.0, 0.0), 1.571)
[/gdscript]
[csharp]
var node = new Node3D();
node.Call(Node3D.MethodName.Rotate, new Vector3(1f, 0f, 0f), 1.571f);

Примітка: У C#, method повинен бути в змії_папір при зверненні до вбудованих методів Godot. За допомогою імен, виставлених в MethodName класу, щоб уникнути виділення нового StringName на кожному виклику.


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

Викликає метод method для об’єкта під час простою. Завжди повертає null, не результат методу.

Час простою відбувається в основному в кінці кадрів процесу та фізики. У ньому відкладені дзвінки виконуватимуться, доки їх не залишиться, що означає, що ви можете відкласти дзвінки з інших відкладених дзвінків, і вони все одно виконуватимуться в поточному циклі простою. Це означає, що ви не повинні викликати метод, відкладений від самого себе (або від викликаного ним методу), оскільки це спричиняє нескінченну рекурсію так само, як якщо б ви викликали метод безпосередньо.

Цей метод підтримує змінну кількість аргументів, тому параметри можна передавати як список, розділений комами.

var node = Node3D.new()
node.call_deferred("rotate", Vector3(1.0, 0.0, 0.0), 1.571)

Дивіться також Callable.call_deferred().

Примітка. У C# method має бути в snake_case, коли йдеться про вбудовані методи Godot. Надавайте перевагу використанню назв, представлених у класі MethodName, щоб уникнути виділення нового StringName під час кожного виклику.

Примітка. Якщо ви хочете затримати виклик функції на кадр, зверніться до сигналів SceneTree.process_frame і SceneTree.physics_frame.

var node = Node3D.new()
# Створіть Callable і прив’яжіть аргументи до виклику rotate() вузла.
var callable = node.rotate.bind(Vector3(1.0, 0.0, 0.0), 1.571)
# З’єднайте виклик із сигналом process_frame, щоб він викликався в наступному кадрі процесу.
# CONNECT_ONE_SHOT гарантує, що він викликається лише один раз замість кожного кадру.
get_tree().process_frame.connect(може викликатися, CONNECT_ONE_SHOT)

Variant callv(method: StringName, arg_array: Array) 🔗

Викликає метод method для об’єкта та повертає результат. На відміну від call(), цей метод очікує, що всі параметри будуть міститися в arg_array.

var node = Node3D.new()
node.callv("rotate", [Vector3(1.0, 0.0, 0.0), 1.571])

Примітка. У C# method має бути в snake_case, коли йдеться про вбудовані методи Godot. Надавайте перевагу використанню назв, представлених у класі MethodName, щоб уникнути виділення нового StringName під час кожного виклику.


bool can_translate_messages() const 🔗

Повертає true, якщо об'єкту дозволено перекладати повідомлення за допомогою методів tr() та tr_n(). Див. також set_message_translation().


void cancel_free() 🔗

Якщо цей метод називається під час NOTIFICATION_PREDELETE, цей об'єкт відхилятиметься безкоштовно і буде залишатися виділеним. Це в основному внутрішня функція, яка використовується для обробки помилок, щоб уникнути користувача від безкоштовних об'єктів, коли вони не призначені.


Error connect(signal: StringName, callable: Callable, flags: int = 0) 🔗

З'єднує signal за іменем з callable. Також можна додати додаткові flags для налаштування поведінки з'єднання (див. константи ConnectFlags).

Сигнал може бути підключений до того самого Callable лише один раз. Якщо сигнал вже підключено, цей метод повертає @GlobalScope.ERR_INVALID_PARAMETER та генерує помилку, якщо сигнал не підключено з CONNECT_REFERENCE_COUNTED. Щоб запобігти цьому, спочатку використовуйте is_connected() для перевірки наявності існуючих з'єднань.

Примітка: Якщо об'єкт callable звільнено, з'єднання буде втрачено.

Примітка: У GDScript зазвичай рекомендується підключати сигнали за допомогою Signal.connect().

Примітка: Ця операція (та всі інші операції, пов'язані з сигналами) є потокобезпечною.


void disconnect(signal: StringName, callable: Callable) 🔗

Відключення сигналу signal за назвою callable. Якщо підключення не існує, генерує помилку. Використовуйте method_connected, щоб переконатися, що підключення існує.


Error emit_signal(signal: StringName, ...) vararg 🔗

Видає заданий сигнал param за назвою. Сигнал має існувати, тому це має бути вбудований сигнал цього класу або одного з його успадкованих класів, або сигнал, визначений користувачем (див. add_user_signal()). Цей метод підтримує змінну кількість аргументів, тому параметри можна передавати як список, розділений комами.

Повертає @GlobalScope.ERR_UNAVAILABLE, якщо signal не існує або параметри недійсні.

emit_signal("damage", "srowd", 100)
emit_signal("end game")

Примітка. У C# signal має бути в snake_case, коли йдеться про вбудовані сигнали Godot. Надавайте перевагу використанню імен, представлених у класі SignalName, щоб уникнути виділення нового StringName під час кожного виклику.


void free() 🔗

Видаляє об'єкт з пам'яті. Попередні посилання на об'єкт стають недійсними, і будь-яка спроба доступу до них призведе до помилки виконання. Перевірка посилань за допомогою методу @GlobalScope.is_instance_valid() поверне false. Це еквівалентно функції memdelete в GDExtension C++.


Variant get(property: StringName) const 🔗

Повертає значення Variant заданої властивості property. Якщо property не існує, цей метод повертає null.

var node = Node2D.new()
node.rotation = 1,5
var a = node.get("rotation") # a дорівнює 1,5

Примітка. У C# property має бути у snake_case, коли йдеться про вбудовані властивості Godot. Надавайте перевагу використанню імен, представлених у класі PropertyName, щоб уникнути виділення нового StringName під час кожного виклику.


String get_class() const 🔗

Повертає назву об'єкта, як String. Дивись ще is_class().

Примітка: Цей метод ігнорує class_name декларації. Якщо цей скрипт об'єкта визначився class_name, основа, вбудована назва класу повертається замість.


Array[Dictionary] get_incoming_connections() const 🔗

Повернення сигналів, отриманих цим об'єктом. Кожен з'єднання представлений як Dictionary, який містить три записи:

  • signal - посилання на Signal;

  • Callable - посилання на Callable;

flags є поєднання ConnectFlags.


Variant get_indexed(property_path: NodePath) const 🔗

Отримує властивість об’єкта, індексовану заданим property_path. Шлях має бути NodePath відносно поточного об’єкта та може використовувати символ двокрапки (:) для доступу до вкладених властивостей.

Приклади: "position:x" або "material:next_pass:blend_mode".

var node = Node2D.new()
node.position = Vector2(5, -10)
var a = node.get_indexed("position") # a is Vector2(5, -10)
var b = node.get_indexed("position:y") # b дорівнює -10

Примітка. У C# property_path має бути у snake_case, коли йдеться про вбудовані властивості Godot. Надавайте перевагу використанню імен, представлених у класі PropertyName, щоб уникнути виділення нового StringName під час кожного виклику.

Примітка: цей метод не підтримує фактичні шляхи до вузлів у SceneTree, лише шляхи підвластивостей. У контексті вузлів замість цього використовуйте Node.get_node_and_resource().


int get_instance_id() const 🔗

Повертає унікальний ідентифікатор об'єкта. Цей ідентифікатор може бути збережений в EncodedObjectAsID, і може бути використаний для отримання цього екземпляра об'єкта з @GlobalScope.instance_from_id().

Примітка: Цей ідентифікатор корисний тільки під час поточного сеансу. Не відповідає подібному об'єкту, якщо ID надсилається через мережу, або завантажується з файлу пізніше.


Variant get_meta(name: StringName, default: Variant = null) const 🔗

Повертає значення метаданих об'єкта на задану запис name. Якщо запис не існує, повертає default. Якщо default є null, також створюється помилка.

Note: Ім'я метаданих повинна бути дійсним ідентифікатором за методом StringName.is_valid_identifier().

Note: Метадані, які мають назву, починаючи з низу (_) вважається редактором. Редактор-тільки метаданих не відображається в Інспекторі і не слід редагувати, хоча це ще можна знайти цим методом.


Array[StringName] get_meta_list() const 🔗

Повертає імена записів метаданих об’єкта як Array з StringName.


int get_method_argument_count(method: StringName) const 🔗

Повертаємо кількість аргументів вказаного method за назвою.

Примітка: У C#, method повинен бути в змії_кейс при зверненні до вбудованих методів Godot. За допомогою імен, виставлених в MethodName класу, щоб уникнути виділення нового StringName на кожному дзвінку.


Array[Dictionary] get_method_list() const 🔗

Повернути методи цього об’єкта та їх підписи як Array словників. Кожен Dictionary містить наступні записи:

  • name - назва методу, як String;

  • args - Array словників, що представляють аргументи;

  • default_args - аргументи за замовчуванням як Array варіантів;

  • flags - поєднання MethodFlags;

  • id є внутрішнім ідентифікатором методу int;

  • return є повернутою вартістю, як Dictionary;

Примітка: Ви словники args і return відформатовані ідентично результатам get_property_list(), хоча не всі записи використовуються.


Array[Dictionary] get_property_list() const 🔗

Повертаємо список майна об’єкта як Array словників. Кожен Dictionary містить наступні записи:

  • name - назва майна, як String;

  • class_name є порожньою StringName, якщо майно є @GlobalScope.TYPE_OBJECT і спадок від класу;

  • type - тип нерухомості, як int (див. inum Variant.Type);

  • hint is how властиво редагувати (див. PropertyHint);

  • hint_string залежить від натяка (див. PropertyHint);

usage є поєднанням PropertyUsageFlags.

Примітка: У GDScript всі члени класу лікуються як властивості. У C# та GDExtension обов’язково слід відмітити учасників класу, які використовують декоратори або атрибут Godot.


Variant get_script() const 🔗

Повертає екземпляр об'єкта, або null, якщо не додано скрипт.


Array[Dictionary] get_signal_connection_list(signal: StringName) const 🔗

Повертаємо назву Array з'єднань для вказаного signal. Кожен з'єднання представлений як Dictionary, який містить три записи:

  • сигнал є посиланням на Signal;

  • Callable - посилання на підключений Callable;

  • flags - це поєднання ConnectFlags.


Array[Dictionary] get_signal_list() const 🔗

Повертає список існуючих сигналів, як Array словників.

Примітка: У зв'язку з виконанням, кожен Dictionary дуже схожий на повернуті значення get_method_list().


StringName get_translation_domain() const 🔗

Повертає назву домену перекладу, який використовується tr() і tr_n(). Дивіться також TranslationServer.


bool has_connections(signal: StringName) const 🔗

Повертає true, якщо існує будь-яке з’єднання з заданим ім’ям signal.

Примітка. У C# signal має бути в snake_case, коли йдеться про вбудовані методи Godot. Надавайте перевагу використанню імен, представлених у класі SignalName, щоб уникнути виділення нового StringName під час кожного виклику.


bool has_meta(name: StringName) const 🔗

Повертаємо true, якщо запис метаданих з вказаною name. Дивись також get_meta(), set_meta() і remove_meta().

Примітка: Назва метаданих повинна бути дійсним ідентифікатором за методом StringName.is_valid_identifier().

Примітка: Метадані, які мають назву, починаючи з низу (_) вважається редактором. Редактор-тільки метаданих не відображається в Інспекторі і не слід редагувати, хоча це ще можна знайти цим методом.


bool has_method(method: StringName) const 🔗

Повертаємо true, якщо надана method ім'я існує в об'єкті.

Примітка: У C#, method повинен бути в змії_кейс при зверненні до вбудованих методів Godot. За допомогою імен, виставлених в MethodName класу, щоб уникнути виділення нового StringName на кожному дзвінку.


bool has_signal(signal: StringName) const 🔗

Повертає true, якщо вказане ім’я signal існує в об’єкті.

Примітка. У C# signal має бути в snake_case, коли йдеться про вбудовані сигнали Godot. Надавайте перевагу використанню імен, представлених у класі SignalName, щоб уникнути виділення нового StringName під час кожного виклику.


bool has_user_signal(signal: StringName) const 🔗

Повертаємо true, якщо вказано ім'я користувача signal. Додані тільки сигнали add_user_signal(). Дивись також видалення_user_signal().


bool is_blocking_signals() const 🔗

Повертаємо true, якщо об'єкт блокує свої сигнали від того, що він вдається. Подивитися set_block_signals().


bool is_class(class: String) const 🔗

Повертає true, якщо об’єкт успадковує заданий class. Дивіться також get_class().

var sprite2d = Sprite2D.new()
sprite2d.is_class("Sprite2D") # Повертає true
sprite2d.is_class("Вузол") # Повертає true
sprite2d.is_class("Node3D") # Повертає false

Примітка: цей метод ігнорує оголошення class_name у сценарії об’єкта.


bool is_connected(signal: StringName, callable: Callable) const 🔗

Повертає true, якщо існує зв’язок між вказаною назвою signal і callable.

Примітка. У C# signal має бути в snake_case, коли йдеться про вбудовані сигнали Godot. Надавайте перевагу використанню імен, представлених у класі SignalName, щоб уникнути виділення нового StringName під час кожного виклику.


bool is_queued_for_deletion() const 🔗

Повернення true, якщо метод Node.queue_free() був викликаний для об'єкта.


void notification(what: int, reversed: bool = false) 🔗

Надсилає надане сповіщення what усім класам, успадкованим об’єктом, ініціюючи виклики _notification(), починаючи від найвищого предка (клас Object) і опускаючись до сценарію об’єкта.

Якщо reversed має значення true, порядок викликів змінюється на зворотний.

var player = Node2D.new()
player.set_script(load("res://player.gd"))

player.notification(NOTIFICATION_ENTER_TREE)
# Порядок викликів: Object -> Node -> Node2D -> player.gd.

player.notification(NOTIFICATION_ENTER_TREE, true)
# Порядок виклику player.gd -> Node2D -> Node -> Object.

void notify_property_list_changed() 🔗

Визначте property_list_changed сигнал. Це в основному використовується для оновлення редактора, щоб Інспектор і плагіни редактора були належним чином оновлені.


bool property_can_revert(property: StringName) const 🔗

Повертаємо true, якщо надана property має користувацьке значення за замовчуванням. Використовуйте property_get_revert(), щоб отримати значення за замовчуванням property.

Примітка: Цей метод використовується Inspector dock для відображення значка реверта. Об'єкт повинен здійснювати _property_can_revert() для налаштування значення за замовчуванням. Якщо _property_can_revert() не реалізовано, цей метод повертає false.


Variant property_get_revert(property: StringName) const 🔗

Повернення замовного значення за замовчуванням вказаного property. Використовуйте Property_can_revert(), щоб перевірити, чи має значення property.

Примітка: Цей метод використовується Inspector dock для відображення значка реверта. Об'єкт повинен здійснювати _property_get_revert() для налаштування значення за замовчуванням. Якщо _property_get_revert() не реалізовано, цей метод повертає null.


void remove_meta(name: StringName) 🔗

Вилучає заданий запис name з метаданих об'єкта. has_meta(), get_meta() і set_meta().

Примітка: Назва метаданих повинна бути дійсним ідентифікатором за методом StringName.is_valid_identifier().

Примітка: Метадані, які мають назву, починаючи з низу (_) вважається редактором. Редактор-тільки метаданих не відображається в Інспекторі і не слід редагувати, хоча це ще можна знайти цим методом.


void remove_user_signal(signal: StringName) 🔗

Видаляє заданий користувацький сигнал signal з об'єкта. Див. також add_user_signal() та has_user_signal().


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

Призначає value даній property. Якщо властивість не існує або заданий тип value не збігається, нічого не відбувається.

var node = Node2D.new()
node.set("global_scale", Vector2(8, 2.5))
print(node.global_scale) # Друк (8.0, 2.5)

Примітка. У C# property має бути у snake_case, коли йдеться про вбудовані властивості Godot. Надавайте перевагу використанню імен, представлених у класі PropertyName, щоб уникнути виділення нового StringName під час кожного виклику.


void set_block_signals(enable: bool) 🔗

Якщо встановити на true, об'єкт не може випромінювати сигнали. Так, emit_signal() і сигнальних з'єднань не будуть працювати, доки він встановлюється на false.


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

Призначає value даній property у кінці поточного кадру. Це еквівалентно виклику set() через call_deferred().

var node = Node2D.new()
add_child(node)

node.rotation = 1,5
node.set_deferred("обертання", 3.0)
print(node.rotation) # Друкує 1.5

очікувати get_tree().process_frame
print(node.rotation) # Друкує 3.0

Примітка. У C# property має бути у snake_case, коли йдеться про вбудовані властивості Godot. Надавайте перевагу використанню імен, представлених у класі PropertyName, щоб уникнути виділення нового StringName під час кожного виклику.


void set_indexed(property_path: NodePath, value: Variant) 🔗

Призначає нове value властивості, визначеній property_path. Шлях має бути NodePath відносно цього об’єкта та може використовувати символ двокрапки (:) для доступу до вкладених властивостей.

var node = Node2D.new()
node.set_indexed("position", Vector2(42, 0))
node.set_indexed("position:y", -10)
print(node.position) # Друк (42.0, -10.0)

Примітка. У C# property_path має бути у snake_case, коли йдеться про вбудовані властивості Godot. Надавайте перевагу використанню імен, представлених у класі PropertyName, щоб уникнути виділення нового StringName під час кожного виклику.


void set_message_translation(enable: bool) 🔗

Якщо встановлено значення true, дозволяє об'єкту перекладати повідомлення за допомогою методів tr() та tr_n(). Увімкнено за замовчуванням. Див. також метод can_translate_messages().


void set_meta(name: StringName, value: Variant) 🔗

Додає чи змінює запис name всередині метаданих об'єкта. value метаданих може бути будь-яким Variant, хоча деякі типи не можуть бути серіалізовані.

Якщо value є null, запис буде видалено. Це еквівалент використання remove_meta(). Дивитись також has_meta() і get_meta().

Примітка: Ім'я метаданих має бути дійсним ідентифікатором за методом StringName.is_valid_identifier().

Примітка: Метадані, які мають назву, що починається з нижнього підкреслення (_) вважається тільки для редактора. Метадані тільки для редактора не відображаються в інспекторі та не мають редагуватися, хоча ще можуть бути знайдені цим методом.


void set_script(script: Variant) 🔗

Прикріплюємо script на об'єкт, і миттєво розраховує його. В результаті називається скрипт _init(). Використовується для розширення функціональності об'єкта.

Якщо скрипт вже існує, його екземпляр засвоюється, і його значення і стан втрачені. Побудовані значення нерухомості все ще зберігаються.


void set_translation_domain(domain: StringName) 🔗

Встановлює назву домену перекладу, який використовується tr() і tr_n(). Дивіться також TranslationServer.


String to_string() 🔗

Повертаємо String, що представляє об'єкт. За замовчуванням до "<ClassName#RID>". Override _to_string(), щоб налаштувати рядок представлення об'єкта.


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

Перекладає message, використовуючи каталоги перекладу, налаштовані в налаштуваннях проекту. Далі можна уточнити, щоб допомогти з перекладом. Зауважте, що більшість Control вузів автоматично переводять свої рядки, тому цей метод в основному корисний для форматованих рядків або настроюється текст.

Якщо _translate_messages() false, або не доступний переклад, цей метод повертає message без змін. Див. set_message_translation().

Для докладних прикладів див. Міжнародні ігри.

Примітка: Цей метод не може використовуватися без екземпляра Object, оскільки він вимагає методу can_translate_msages(). Щоб перевести рядки в статичному контексті, скористайтеся TranslationServer.translate().


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

Перекладає message або plural_message, використовуючи каталоги перекладу, налаштовані в налаштуваннях проекту. Далі можна уточнити, щоб допомогти з перекладом.

Якщо can_translate_messages() є false, або немає перекладу, цей метод повертає message або plural_message, без змін. Див. set_message_translation().

n - номер, або сума, суб'єкт повідомлення. Застосовується системою перекладів для викопування правильної форми для поточної мови.

Для докладних прикладів див. :doc:` Локалізація з використанням gettext <../tutorials/i18n/localization_using_gettext>`.

Примітка: Негативний і float номери можуть не застосовуватися до деяких підрахованих предметів. Рекомендовано обробляти ці випадки tr().

Примітка: Цей метод не може використовуватися без екземпляра Object, оскільки він вимагає методу can_translate_msages(). Щоб перевести рядки в статичному контексті, скористайтеся message TranslationServer.translate_plural.