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.
Checking the stable version of the documentation...
Engine
Успадковує: Object
Забезпечує доступ до властивостей двигуна.
Опис
Універсальний однотон дозволяє переробити та змінювати параметри проекту, такі як кадри на другий, часовий масштаб та інші. Він також зберігає інформацію про поточну структуру Godot, такі як поточна версія.
Властивості
|
||
|
||
|
||
|
||
|
||
|
||
|
Методи
Array[ScriptBacktrace] |
capture_script_backtraces(include_variables: bool = false) const |
String |
get_architecture_name() const |
get_author_info() const |
|
get_copyright_info() const |
|
get_donor_info() const |
|
get_frames_per_second() const |
|
get_license_info() const |
|
String |
get_license_text() const |
get_main_loop() const |
|
get_physics_frames() const |
|
get_process_frames() const |
|
ScriptLanguage |
get_script_language(index: int) const |
Object |
get_singleton(name: StringName) const |
PackedStringArray |
get_singleton_list() const |
get_version_info() const |
|
String |
get_write_movie_path() const |
has_singleton(name: StringName) const |
|
is_editor_hint() const |
|
is_embedded_in_editor() const |
|
is_in_physics_frame() const |
|
register_script_language(language: ScriptLanguage) |
|
void |
register_singleton(name: StringName, instance: Object) |
unregister_script_language(language: ScriptLanguage) |
|
void |
unregister_singleton(name: StringName) |
Описи властивостей
Максимальна кількість кадрів, які можна відобразити щосекунди (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 🔗
Максимальна кількість фізичних кроків, які можна імітувати кожну рендеровану раму.
Примітка: Значення за замовчуванням полягає в тому, щоб запобігти дорогим фізичним моделюванням від запуску ще більш дорогим симуляторам. Тим не менш, гра з'явиться, щоб уповільнити, якщо рендеринг 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 🔗
Скільки фізичних кліщів синхронізуються з реальним часом. Якщо 0 або менше, кліщі повністю синхронізуються. Найвищі значення викликають в грі годинник, щоб відхилити більше від реального годинника, але вони розгладжують ррейтні струменя.
Примітка: Значення за замовчуванням 0.5 має бути достатньо для більшості випадків; значення над 2 може викликати гру, щоб реагувати на скидання кадрів з помітною затримкою і не рекомендується.
Примітка: При використанні користувальницького фізичного розв'язку, або в рамках мережевої гри, рекомендується вимкнути фізичну фіксацію Джіттера, встановлюючи цю властивість 0.
int physics_ticks_per_second = 60 🔗
Кількість фіксованих ітерацій за секунду. Це визначає частоту запуску фізичного моделювання та методу 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 🔗
Якщо false, припиняє похибку друку і попереджує повідомлення до консолі і журналу виведення редактора. Це може бути використана для приховувати помилки та попередження повідомлень під час проведення тестового пакету. Ця властивість еквівалентна параметру пам'яний проектНалаштування.application/run/disable_stderr.
Примітка: Ця властивість не впливає на вкладку редактора при запуску проекту з редактора.
Попередження: Якщо встановити на false в будь-якій точці проекту, важливі повідомлення про помилки можуть бути приховані, навіть якщо вони випромінюються з інших скриптів. @tool скрипт, це також буде впливати на сам редактор. До * не* ввімкнено помилки до забезпечення повідомлень про помилки (як вони за замовчуванням).
Якщо false, припиняє друк повідомлень (наприклад, за допомогою @GlobalScope.print()) на консоль, файли журналу та журнал виведення редактора. Ця властивість еквівалентна налаштуванню проекту ProjectSettings.application/run/disable_stdout.
Примітка: це не зупиняє друк помилок або попереджень, створених сценаріями, на консоль або файли журналу, для отримання додаткової інформації див. print_error_messages.
Мультиплікатор швидкості, при якому оновлення годинника в режимі реального часу. Наприклад, якщо встановити до 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.
Array[Dictionary] get_copyright_info() const 🔗
Повертаємо вашу інформацію про авторські права на кожен компонент коду джерела Godot.
Кожен Dictionary містить name ідентифікатор і parts array of dictionaries. Він описує компонент в деталях з наступними записами:
files- Array файлових шляхів з коду джерела, що впливає на цей компонент;copyright- Array власників даного компонента;license- Ліцензія, що застосовується до цього компонента (наприклад, "Expat" або "CC-BY-4.0).
Dictionary get_donor_info() const 🔗
Повертає Dictionary категоризованих імен донорів. Кожен запис є Array рядків:
{платинові_спонсори, золоті_спонсори, срібні_спонсори, бронзові_спонсори, міні_спонсори, золоті_донори, донори_срібла, донори_бронзи}
Повертаємо загальну кількість кадрів, що тягнеться з початку двигуна.
Примітка: На безголовних платформах, або якщо рендеринг вимкнено з ---розвантажувально-рендер-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 кадри фізики.
public override void _PhysicsProcess(подвійна дельта)
{
base._PhysicsProcess(дельта);
if (Engine.GetPhysicsFrames() % 2 == 0)
{
// Виконуйте тут дорогу логіку лише один раз на кожні 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 кадрів процесу (рендерингу).
public override void _Process(double delta)
{
base._Process(delta);
if (Engine.GetProcessFrames() % 5 == 0)
{
// Виконуйте дорогу логіку лише один раз на кожні 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.
if ((int)Engine.GetVersionInfo()["hex"] >= 0x040100)
{
// Робіть речі, характерні для версії 4.1 або новішої.
}
else
{
// Робимо речі, характерні для версій до 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
GD.Print(Engine.HasSingleton("ОС")); // Виводить True
GD.Print(Engine.HasSingleton("Engine")); // Виводить True
GD.Print(Engine.HasSingleton("AudioServer")); // Виводить True
GD.Print(Engine.HasSingleton("Невідомо")); // Виводить False
**Примітка: ** Глобальні синглетони — це не те саме, що автоматично завантажені вузли, які можна налаштувати в налаштуваннях проекту.
Повертає true, якщо скрипт зараз запущено в редакторі, інакше повертає false. Це корисно для сценаріїв @tool для умовного малювання помічників редактора або запобігання випадковому запуску «ігрового» коду, який може вплинути на стан сцени під час роботи в редакторі:
if Engine.is_editor_hint():
draw_gizmos()
else:
simulate_physics()
if (Engine.IsEditorHint())
DrawGizmos();
else
SimulatePhysics();
Додаткову інформацію див. у документації Запуск коду в редакторі.
Примітка: Щоб визначити, чи виконується скрипт у збірці редактора (наприклад, під час натискання 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.
Повернення:
@GlobalScope.OK на успіх;
@GlobalScope.ERR_UNAVAILABLE якщо
ScriptServerдосягла ліміту і не може реєструвати будь-яку нову мову;@GlobalScope.ERR_ALREADY_EXISTS якщо
ScriptServerвже містить мову з схожим розширенням / ім'ям/типом.
void register_singleton(name: StringName, instance: Object) 🔗
Зареєстровані дані Object екземпляр як єдинийтон, доступний глобально під назвою name. Корисно для плагінів.
Error unregister_script_language(language: ScriptLanguage) 🔗
ScriptServer.
Повернення:
@GlobalScope.OK на успіх;
@GlobalScope.ERR_DOES_NOT_EXIST якщо мова не зареєстрована в
ScriptServer.
void unregister_singleton(name: StringName) 🔗
Видаляє синглтон, зареєстрований за допомогою name. Об'єкт синглтон не звільнено. Працює лише з визначеними користувачем синглтонами, зареєстрованими за допомогою методу register_singleton().