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.

Теги особенностей

Введение

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

  • Название платформы.

  • Архитектура платформы (64-bit или 32-bit, x86 или ARM).

  • Тип платформы (desktop, mobile, Web).

  • Поддерживаемые алгоритмы сжатия текстур на платформе.

  • Является ли сборка debug или release (debug включает редактор).

  • Выполняется ли проект из редактора или "автономного" двоичного файла.

  • И еще много чего.

Функции можно запрашивать во время выполнения из API-интерфейса Singleton, вызывая:

OS.has_feature(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, используемое для их создания:

../../_images/feature_tags1.webp

Примечание

Пользовательские теги функций используются только при запуске экспортированного проекта (в том числе с помощью Развёртывание в один клик). Они не используются при запуске проекта из редактора, даже если экспортный пресет, помеченный как Runnable для вашей текущей платформы, имеет определенные пользовательские теги функций.

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

Переопределение параметров проекта

Особенности могут быть использованы для переопределения определенных значений конфигурации в Project Settings. Это позволяет лучше настроить любую конфигурацию при выполнении сборки.

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

Панель Настроек Проекта

Выбирается нужная конфигурация, свойства которой фактически копируются на панель выше (1). Выбирается тег функции "demo_build" (2). Конфигурация добавляется в настройки проекта (3).

После переопределения добавляется новое поле для данной конкретной конфигурации.

../../_images/feature_tags3.webp

Примечание

При использовании project settings "override.cfg" functionality (которая не связана с тегами функций) помните, что теги функций все еще применяются. Поэтому не забудьте также переопределить настройку с помощью желаемого тега(-ов) функции, если вы хотите, чтобы они переопределяли настройки базового проекта на всех платформах и конфигурациях.

Основные переопределения

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

../../_images/feature_tags4.webp

Учет тегов функций при чтении настроек проекта

По умолчанию теги функций не учитываются при чтении настроек проекта с использованием типичных подходов (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.