Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Engine

Успадковує: Object

Забезпечує доступ до властивостей двигуна.

Опис

Універсальний однотон дозволяє переробити та змінювати параметри проекту, такі як кадри на другий, часовий масштаб та інші. Він також зберігає інформацію про поточну структуру Godot, такі як поточна версія.

Властивості

int

max_fps

0

int

max_physics_steps_per_frame

8

float

physics_jitter_fix

0.5

int

physics_ticks_per_second

60

bool

print_error_messages

true

bool

print_to_stdout

true

float

time_scale

1.0

Методи

Array[ScriptBacktrace]

capture_script_backtraces(include_variables: bool = false) const

String

get_architecture_name() const

Dictionary

get_author_info() const

Array[Dictionary]

get_copyright_info() const

Dictionary

get_donor_info() const

int

get_frames_drawn()

float

get_frames_per_second() const

Dictionary

get_license_info() const

String

get_license_text() const

MainLoop

get_main_loop() const

int

get_physics_frames() const

float

get_physics_interpolation_fraction() const

int

get_process_frames() const

ScriptLanguage

get_script_language(index: int) const

int

get_script_language_count()

Object

get_singleton(name: StringName) const

PackedStringArray

get_singleton_list() const

Dictionary

get_version_info() const

String

get_write_movie_path() const

bool

has_singleton(name: StringName) const

bool

is_editor_hint() const

bool

is_embedded_in_editor() const

bool

is_in_physics_frame() const

Error

register_script_language(language: ScriptLanguage)

void

register_singleton(name: StringName, instance: Object)

Error

unregister_script_language(language: ScriptLanguage)

void

unregister_singleton(name: StringName)


Описи властивостей

int max_fps = 0 🔗

  • void set_max_fps(value: int)

  • int get_max_fps()

Максимальна кількість кадрів, які можна відобразити щосекунди (FPS). Значення 0 означає, що частота кадрів не обмежена.

Обмеження FPS може бути корисним для зменшення споживання енергії хост-машиною, що зменшує нагрівання, шумові викиди та подовжує термін служби батареї.

Якщо ProjectSettings.display/window/vsync/vsync_mode має значення Увімкнено або Адаптивно, цей параметр має пріоритет, і максимальне число FPS не може перевищувати частоту оновлення монітора. Див. також DisplayServer.screen_get_refresh_rate().

Якщо ProjectSettings.display/window/vsync/vsync_mode має значення Увімкнено, на моніторах із увімкненою змінною частотою оновлення (G-Sync/FreeSync), використання обмеження FPS на кілька кадрів нижче частоти оновлення монітора зменшить затримку введення, уникаючи розривів. За вищих частот оновлення різницю між обмеженням FPS та частотою оновлення монітора слід збільшити, щоб забезпечити кадри з урахуванням неточностей синхронізації. Оптимальна формула для визначення обмеження FPS у цьому сценарії: r - (r * r) / 3600.0, де r – це частота оновлення монітора.

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

Примітка: Якщо ProjectSettings.display/window/vsync/vsync_mode має значення Вимкнено, обмеження FPS високим значенням, яке можна послідовно досягти в системі, може зменшити затримку введення порівняно з необмеженою частотою кадрів. Оскільки це працює, забезпечуючи навантаження графічного процесора нижче 100%, це зменшення затримки ефективне лише у сценаріях з обмеженим графічним процесором, а не у сценаріях з обмеженим графічним процесором.


int max_physics_steps_per_frame = 8 🔗

  • void set_max_physics_steps_per_frame(value: int)

  • int get_max_physics_steps_per_frame()

Максимальна кількість фізичних кроків, які можна імітувати кожну рендеровану раму.

Примітка: Значення за замовчуванням полягає в тому, щоб запобігти дорогим фізичним моделюванням від запуску ще більш дорогим симуляторам. Тим не менш, гра з'явиться, щоб уповільнити, якщо рендеринг FPS менше 1 / max_physics_steps_per_frame physics_ticks_per_second. Це відбувається навіть якщо delta послідовно використовується в фізичних обчисленнях. Щоб уникнути цього, збільшення max_physics_steps_per_frame, якщо ви збільшили physics_ticks_per_second значно вище значення за замовчуванням.


float physics_jitter_fix = 0.5 🔗

  • void set_physics_jitter_fix(value: float)

  • float get_physics_jitter_fix()

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

Примітка: Значення за замовчуванням 0.5 має бути достатньо для більшості випадків; значення над 2 може викликати гру, щоб реагувати на скидання кадрів з помітною затримкою і не рекомендується.

Примітка: При використанні користувальницького фізичного розв'язку, або в рамках мережевої гри, рекомендується вимкнути фізичну фіксацію Джіттера, встановлюючи цю властивість 0.


int physics_ticks_per_second = 60 🔗

  • void set_physics_ticks_per_second(value: int)

  • int get_physics_ticks_per_second()

Кількість фіксованих ітерацій за секунду. Це визначає частоту запуску фізичного моделювання та методу Node._physics_process().

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

Див. також max_fps та ProjectSettings.physics/common/physics_ticks_per_second.

Примітка: Тільки max_physics_steps_per_frame фізичних тактів можна моделювати на один кадр рендерингу. Якщо для рендерингу потрібно моделювати більше фізичних тактів на один кадр рендерингу, щоб встигати за рендерингом, проект виглядатиме сповільненим (навіть якщо delta використовується послідовно у фізичних розрахунках). Тому рекомендується також збільшити max_physics_steps_per_frame, якщо physics_ticks_per_second значно збільшується вище значення за замовчуванням.

Примітка: Розгляньте можливість увімкнення фізичної інтерполяції, якщо ви змінюєте physics_ticks_per_second на значення, не кратне 60. Використання фізичної інтерполяції дозволить уникнути тремтіння, коли частота оновлення монітора та частота оновлення фізики не зовсім збігаються.


bool print_error_messages = true 🔗

  • void set_print_error_messages(value: bool)

  • bool is_printing_error_messages()

Якщо false, припиняє похибку друку і попереджує повідомлення до консолі і журналу виведення редактора. Це може бути використана для приховувати помилки та попередження повідомлень під час проведення тестового пакету. Ця властивість еквівалентна параметру пам'яний проектНалаштування.application/run/disable_stderr.

Примітка: Ця властивість не впливає на вкладку редактора при запуску проекту з редактора.

Попередження: Якщо встановити на false в будь-якій точці проекту, важливі повідомлення про помилки можуть бути приховані, навіть якщо вони випромінюються з інших скриптів. @tool скрипт, це також буде впливати на сам редактор. До * не* ввімкнено помилки до забезпечення повідомлень про помилки (як вони за замовчуванням).


bool print_to_stdout = true 🔗

  • void set_print_to_stdout(value: bool)

  • bool is_printing_to_stdout()

Якщо false, припиняє друк повідомлень (наприклад, за допомогою @GlobalScope.print()) на консоль, файли журналу та журнал виведення редактора. Ця властивість еквівалентна налаштуванню проекту ProjectSettings.application/run/disable_stdout.

Примітка: це не зупиняє друк помилок або попереджень, створених сценаріями, на консоль або файли журналу, для отримання додаткової інформації див. print_error_messages.


float time_scale = 1.0 🔗

  • void set_time_scale(value: float)

  • float get_time_scale()

Мультиплікатор швидкості, при якому оновлення годинника в режимі реального часу. Наприклад, якщо встановити до 2.0 гра працює двічі як швидко, і якщо встановити до 0.5 гра працює вдвічі швидше.

Це значення впливає на Timer, SceneTreeTimer, і всі інші імітації, які використовують delta час (наприклад, Node._process() і Node._physics_process()).

Примітка: Рекомендується зберігати цю властивість вище 0.0, так як гра може бути несподівано інакше.

Примітка: Це не впливає на швидкість відтворення аудіо. Використовуйте AudioServer.playback_speed_scale для налаштування швидкості відтворення аудіо незалежно від time_scale.

Примітка: Це не автоматично регулюється physics_ticks_per_second. З значеннями вище 1.0 фізичний моделювання може стати менш точним, оскільки кожен фізичний кліщ буде розтягувати більший період часу двигуна. Якщо ви модифікуєте time_s ale для прискорення моделювання великим фактором, розглянемо також збільшення physics_ticks_per_second, щоб зробити моделювання більш надійним.


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

Array[ScriptBacktrace] capture_script_backtraces(include_variables: bool = false) const 🔗

Захоплює та повертає зворотні трасування з усіх зареєстрованих мов сценаріїв.

За замовчуванням повернений ScriptBacktrace міститиме лише фрейми стеку в збірках редактора та налагоджувальних збірках. Щоб увімкнути їх також для релізних збірок, потрібно ввімкнути ProjectSettings.debug/settings/gdscript/always_track_call_stacks.

Якщо include_variables має значення true, зворотне трасування також включатиме назви та значення будь-яких глобальних змінних (наприклад, автозавантажуваних одиночних змінних) у точці захоплення, а також локальні змінні та змінні-члени класу в кожному фреймі стеку. Однак це буде враховано лише під час запуску гри з підключеним налагоджувачем, наприклад, під час запуску гри з редактора. Щоб увімкнути його також для експортних збірок, потрібно ввімкнути ProjectSettings.debug/settings/gdscript/always_track_local_variables.

Попередження: Коли include_variables має значення true, будь-які захоплені змінні потенційно можуть (наприклад, за допомогою зворотних трас GDScript) бути їхніми фактичними значеннями, включаючи будь-які посилання на об'єкти. Це означає, що зберігання такого ScriptBacktrace запобіжить звільненню цих об'єктів, тому зазвичай рекомендується цього не робити.


String get_architecture_name() const 🔗

Повертає назву архітектури процесора, для якої було зібрано бінарний файл Godot. Можливі значення повернення включають "x86_64", "x86_32", "arm64", "arm32", "rv64", "ppc64", "loongarch64", "wasm64" та "wasm32".

Щоб визначити, чи є поточна збірка 64-розрядною, або тип архітектури, не використовуйте назву архітектури. Натомість використовуйте OS.has_feature() для перевірки тегу функції "64" або таких тегів, як "x86" або "arm". Див. документацію Теги функцій для отримання додаткової інформації.

Примітка: Цей метод не повертає назву архітектури процесора системи (як OS.get_processor_name()). Наприклад, під час запуску бінарного файлу Godot x86_32 на системі x86_64 повернене значення все одно буде "x86_32".


Dictionary get_author_info() const 🔗

Повертає авторську інформацію двигуна як Dictionary, де кожен запис є Array рядків з іменами ненадійних представників двигуна Godot: lead_developers, `` Засновники``, project_managers, і developers.


Повертаємо вашу інформацію про авторські права на кожен компонент коду джерела Godot.

Кожен Dictionary містить name ідентифікатор і parts array of dictionaries. Він описує компонент в деталях з наступними записами:

  • files - Array файлових шляхів з коду джерела, що впливає на цей компонент;

  • copyright - Array власників даного компонента;

  • license - Ліцензія, що застосовується до цього компонента (наприклад, "Expat" або "CC-BY-4.0).


Dictionary get_donor_info() const 🔗

Повертає Dictionary категоризованих імен донорів. Кожен запис є Array рядків:

{платинові_спонсори, золоті_спонсори, срібні_спонсори, бронзові_спонсори, міні_спонсори, золоті_донори, донори_срібла, донори_бронзи}


int get_frames_drawn() 🔗

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

Примітка: На безголовних платформах, або якщо рендеринг вимкнено з ---розвантажувально-рендер-loop через командний ряд, цей метод завжди повертає 0. Дивись також get_process_frames().


float get_frames_per_second() const 🔗

Повертаємо середні кадри, що наводяться кожні другий (FPS), також відомий як каркас.


Dictionary get_license_info() const 🔗

Повернутися до Dictionary ліцензій, які використовуються Godot і включені до сторонніх компонентів. Кожен запис - це назва ліцензії (наприклад, url=https://en.wikipedia.org/wiki/MIT_License#Ambiguity_and_variants]Expat/url) та його асоційований текст.


String get_license_text() const 🔗

Повернутися до повноліцензійного тексту Godot.


MainLoop get_main_loop() const 🔗

Повертає екземпляр MainLoop. Це, як правило, основний SceneTree і є таким же, як Node.get_tree().

Примітка: Тип, миттєвий як основну петлю можна змінити за допомогою ProjectSettings.application/run/main_loop_type.


int get_physics_frames() const 🔗

Повертає загальну кількість кадрів, пройдених з моменту запуску двигуна. Це число збільшується з кожним фізичним кадром. Дивіться також get_process_frames().

Цей метод можна використовувати для рідшого запуску дорогої логіки, не покладаючись на Timer:

func _physics_process(_delta):
    if Engine.get_physics_frames() % 2 == 0:
        pass # Виконуйте тут дорогу логіку лише один раз на кожні 2 кадри фізики.

float get_physics_interpolation_fraction() const 🔗

Повертаємо дроб через точну фізичну клітку, ми в момент рендерингу рами. Це може бути використана для реалізації фіксованого переполування часу.


int get_process_frames() const 🔗

Повертає загальну кількість кадрів, пройдених з моменту запуску двигуна. Це число збільшується з кожним кадром процесу, незалежно від того, чи ввімкнено цикл візуалізації. Дивіться також get_frames_drawn() і get_physics_frames().

Цей метод можна використовувати для рідшого запуску дорогої логіки, не покладаючись на Timer:

func _process(_delta):
    if Engine.get_process_frames() % 5 == 0:
        pass # Запускати дорогу логіку лише один раз на кожні 5 кадрів процесу (рендерингу).

ScriptLanguage get_script_language(index: int) const 🔗

Повертає екземпляр ScriptLanguage з заданим index.


int get_script_language_count() 🔗

Повертаємо кількість наявних скриптів мов. Використання get_script_language().


Object get_singleton(name: StringName) const 🔗

Повертає глобальний синглтон із заданим name або null, якщо його не існує. Часто використовується для плагінів. Див. також has_singleton() та get_singleton_list().

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


PackedStringArray get_singleton_list() const 🔗

Повертає список імен усіх доступних глобальних єдинотонів. Дивитися також get_singleton().


Dictionary get_version_info() const 🔗

Повертає інформацію про поточну версію двигуна як Dictionary, що містить такі записи:

  • major - номер основної версії як int;

  • мінор - номер другорядної версії як int;

  • патч - номер версії латки як int;

  • hex - повна версія, закодована як шістнадцяткове ціле число з одним байтом (2 шістнадцяткові цифри) на число (див. приклад нижче);

  • статус - статус (такий як "бета", "rc1", "rc2", "стабільний" тощо) у вигляді рядка;

  • build - назва збірки (наприклад, "custom_build") у вигляді рядка;

  • хеш - повний хеш фіксації Git як рядок;

  • timestamp – зберігає мітку часу UNIX дати коміту Git у секундах як int або 0, якщо недоступний;

  • рядок - основний, мінорний, патч, статус і збірка в одному рядку.

Значення hex кодується наступним чином, зліва направо: один байт для основного, один байт для другорядного, один байт для версії виправлення. Наприклад, "3.1.12" буде 0x03010C.

Примітка: Значення hex все ще внутрішньо є int, і його друк дасть вам його десяткове представлення, що не має особливого значення. Використовуйте шістнадцяткові літерали для швидкого порівняння версій коду:

if Engine.get_version_info().hex >= 0x040100:
    pass # Робіть дії, характерні для версії 4.1 або новішої.
else:
    pass # Робити речі, характерні для версій до 4.1.

String get_write_movie_path() const 🔗

Повертає шлях до вихідного файлу MovieWriter або порожній рядок, якщо механізм не було запущено в режимі Movie Maker. Шлях за замовчуванням можна змінити в ProjectSettings.editor/movie_writer/movie_file.


bool has_singleton(name: StringName) const 🔗

Повертає true, якщо синглтон із заданим name існує в глобальній області. Дивіться також get_singleton().

print(Engine.has_singleton("OS")) # Виводить true
print(Engine.has_singleton("Engine")) # Виводить true
print(Engine.has_singleton("AudioServer")) # Виводить true
print(Engine.has_singleton("Unknown")) # Виводить false

**Примітка: ** Глобальні синглетони — це не те саме, що автоматично завантажені вузли, які можна налаштувати в налаштуваннях проекту.


bool is_editor_hint() const 🔗

Повертає true, якщо скрипт зараз запущено в редакторі, інакше повертає false. Це корисно для сценаріїв @tool для умовного малювання помічників редактора або запобігання випадковому запуску «ігрового» коду, який може вплинути на стан сцени під час роботи в редакторі:

if Engine.is_editor_hint():
    draw_gizmos()
else:
    simulate_physics()

Додаткову інформацію див. у документації Запуск коду в редакторі.

Примітка: Щоб визначити, чи виконується скрипт у збірці редактора (наприклад, під час натискання F5), замість цього використовуйте OS.has_feature() з аргументом "editor". OS.has_feature("editor") має значення true як під час виконання скрипту в редакторі, так і під час запуску проекту з редактора, але повертає false під час запуску з експортованого проекту.


bool is_embedded_in_editor() const 🔗

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


bool is_in_physics_frame() const 🔗

Повертає true, якщо двигун знаходиться всередині кроку фіксованого фізичного процесу основного циклу.

func _enter_tree():
    # Залежно від того, коли вузол додано до дерева,
    # виводить «true» або «false».
    print(Engine.is_in_physics_frame())

func _process(delta):
    print(Engine.is_in_physics_frame()) # Виводить false

func _physics_process(delta):
    print(Engine.is_in_physics_frame()) # Виводить true

Error register_script_language(language: ScriptLanguage) 🔗

ScriptServer.

Повернення:


void register_singleton(name: StringName, instance: Object) 🔗

Зареєстровані дані Object екземпляр як єдинийтон, доступний глобально під назвою name. Корисно для плагінів.


Error unregister_script_language(language: ScriptLanguage) 🔗

ScriptServer.

Повернення:


void unregister_singleton(name: StringName) 🔗

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