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...
Теги особенностей
Введение
У Godot есть специальная система для тегов особенностей. Каждая особенность представлена в виде строки, которая может ссылаться на многие из следующих элементов:
Название платформы.
Архитектура платформы (64-bit или 32-bit, x86 или ARM).
Тип платформы (desktop, mobile, Web).
Поддерживаемые алгоритмы сжатия текстур на платформе.
Является ли сборка
debugилиrelease(debugвключает редактор).Выполняется ли проект из редактора или "автономного" двоичного файла.
И еще много чего.
Функции можно запрашивать во время выполнения из API-интерфейса Singleton, вызывая:
OS.has_feature(name)
OS.HasFeature(name);
Теги функций ОС используются GDExtension для определения загружаемых библиотек. Например, библиотека для linux.debug.editor.x86_64 будет загружена только в сборке отладочного редактора для Linux x86_64.
Основные особенности
Вот список большинства тегов особенностей в Godot. Имейте в виду, что они case-sensitive (чувствительны к регистру):
Тег особенности |
Описание |
|---|---|
android |
Работает на Android (но не в веб-браузере) |
bsd |
Работает на *BSD (но не в веб-браузере) |
linux |
Работает в Linux (но не в веб-браузере) |
macOS |
Работает в macOS (но не в веб-браузере) |
ios |
Работает в iOS (но не в веб-браузере) |
visionos |
Работает на visionOS (но не в веб-браузере) |
windows |
Работает на Windows |
linux-bsd |
Работает на Linux или *BSD |
debug |
Запуск в отладочной сборке (including the editor) |
release |
Запуск на релизной сборке |
editor |
Запуск в сборке редактора |
editor_hint |
Работает в сборке редактора и внутри редактора |
editor_runtime |
Запуск сборки редактора и запуск проекта |
template (шаблон) |
Запуск на сборке без редактора (экспортный шаблон) |
double (двойной) |
Работает на сборке с двойной точностью |
single (одинарный) |
Работа на сборке с одинарной точностью |
64 |
Запуск на 64-bit сборке (любая архитектура) |
32 |
Запуск на 32-bit сборке (любая архитектура) |
x86_64 |
Запуск на 64-bit x86 сборке |
x86_32 |
Запуск на 32-bit x86 сборке |
x86 |
Работает на архитектуре x86 (любой битности) |
arm64 |
Запуск на 64-bit ARM сборке |
arm32 |
Запуск на 32-bit ARM сборке |
arm |
Работает на сборке ARM (любой разрядности) |
rv64 |
Работает на 64-битной сборке RISC-V |
risc-v |
Работает на сборке RISC-V (любой разрядности) |
ppc-64 |
Работает на 64-битной сборке PowerPC |
ppc-32 |
Работает на 32-битной сборке PowerPC |
powerpc |
Работает на сборке PowerPC (любой разрядности) |
wasm-64 |
Запуск на 64-битной сборке WebAssembly (пока невозможно) |
wasm-32 |
Работает на 32-битной сборке WebAssembly |
WASM |
Запуск сборки WebAssembly (любой разрядности) |
мобильные устройства |
Host OS - это мобильная платформа |
pc |
Host OS - это PC платформа (desktop/laptop) |
web |
Host OS - это веб-браузер |
nothreads |
Работает без поддержки потоков |
threads |
Работает с поддержкой потоковой передачи |
web_android |
Host OS — это веб-браузер, работающий на Android |
web_ios |
Host ОС — это веб-браузер, работающий на iOS |
web_linuxbsd |
Host ОС — это веб-браузер, работающий на Linux или *BSD |
web_macos |
Host ОС — это веб-браузер, работающий на macOS |
web_windows |
Host ОС — это веб-браузер, работающий на Windows |
etc |
Поддерживаются текстуры с применением сжатия ETC1 |
etc2 |
Поддерживаются текстуры с применением сжатия ETC2 |
s3tc |
Поддерживаются текстуры с применением сжатия S3TC (DXT/BC) |
movie |
Movie Maker mode активен |
shader_baker |
Проект был экспортирован с включенным shader baking (применяется только к экспортированному проекту, а не при запуске в редакторе) |
dedicated_server |
Проект был экспортирован как dedicated server (применяется только к экспортированному проекту, а не при запуске в редакторе) |
Предупреждение
За исключением сжатия текстур, тегов функций web_<platform> и movie, теги функций по умолчанию являются неизменяемыми. Это означает, что они не будут меняться в зависимости от условий выполнения. Например, OS.has_feature("mobile") вернёт false при запуске проекта, экспортированного в Web, на мобильном устройстве.
Чтобы проверить, запущен ли экспортированный в Интернет проект на мобильном устройстве, используйте OS.has_feature("web_android") или OS.has_feature("web_ios").
Пользовательские особенности
Можно добавить пользовательские особенности в сборку; используйте соответствующее поле в export preset, используемое для их создания:
Примечание
Пользовательские теги функций используются только при запуске экспортированного проекта (в том числе с помощью Развёртывание в один клик). Они не используются при запуске проекта из редактора, даже если экспортный пресет, помеченный как Runnable для вашей текущей платформы, имеет определенные пользовательские теги функций.
Пользовательские теги функций также не используются в скриптах EditorExportPlugin. Вместо этого теги функций в EditorExportPlugin будут отражать устройство, на котором в данный момент запущен редактор.
Переопределение параметров проекта
Особенности могут быть использованы для переопределения определенных значений конфигурации в Project Settings. Это позволяет лучше настроить любую конфигурацию при выполнении сборки.
В следующем примере для демо-сборки игры добавляется другой значок (который был настроен в специальном пресете экспорта, который, в свою очередь, включает только демо-уровни).
Выбирается нужная конфигурация, свойства которой фактически копируются на панель выше (1). Выбирается тег функции "demo_build" (2). Конфигурация добавляется в настройки проекта (3).
После переопределения добавляется новое поле для данной конкретной конфигурации.
Примечание
При использовании project settings "override.cfg" functionality (которая не связана с тегами функций) помните, что теги функций все еще применяются. Поэтому не забудьте также переопределить настройку с помощью желаемого тега(-ов) функции, если вы хотите, чтобы они переопределяли настройки базового проекта на всех платформах и конфигурациях.
Основные переопределения
Уже существует множество настроек, которые по умолчанию поставляются с переопределением; их можно найти во многих разделах настроек проекта.
Учет тегов функций при чтении настроек проекта
По умолчанию теги функций не учитываются при чтении настроек проекта с использованием типичных подходов (ProjectSettings.get_setting или ProjectSettings.get). Вместо этого вы должны использовать ProjectSettings.get_setting_with_override.
Например, со следующими настройками проекта:
[section]
subsection/example = "Release"
subsection/example.debug = "Debug"
Использование ProjectSettings.get_setting("section/subsection/example") вернет "Release" независимо от того, запущена ли в данный момент отладочная сборка. С другой стороны, ProjectSettings.get_setting_with_override("section/subsection/example") будет подчиняться тегам функций и вернет "Debug" при использовании отладочной сборки.
Настройка сборки
Теги особенностей также можно использовать для настройки процесса сборки, написав пользовательский ExportPlugin. Они также используются для указания того, какая общая библиотека загружается и экспортируется в GDExtension.