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-розрядна, або 32-бітна, x86, або ARM).

  • Тип платформи (настільний, мобільний, веб).

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

  • Збірку debug, або release (debug включає редактор).

  • Проєкт, що працює із редактора, чи "окремого" бінарника.

  • Ще багато речей.

Функції можна запитувати під час виконання з єдиного API, викликавши:

OS.has_feature(name)

Теги функцій ОС використовуються GDExtension, щоб визначити, які бібліотеки завантажувати. Наприклад, бібліотека для linux.debug.editor.x86_64 буде завантажена лише у збірці редактора налагодження для Linux x86_64.

Типові можливості

Ось список більшості тегів функцій у Godot. Майте на увазі, що вони чутливі до регістру:

Тег функції

Опис

android

Працює на Android (але не в веб-браузері)

bsd

Працює на *BSD (але не в веб-браузері)

лінукс

Працює в Linux (але не в веб-браузері)

macos

Працює в macOS (але не в веб-браузері)

ios

Працює на iOS (але не в веб-браузері)

visionos

Працює на visionOS (але не у веббраузері)

вікна

Працюємо у Windows

linux bsd

Працює на Linux або *BSD

debug

Працює у діагностичній збірці (включає редактор)

release

Працюємо у збірці для випуску

editor

Працює в збірці редактора

editor_hint

Запуск на збірці редактора та всередині редактора

editor_runtime

Запуск на збірці редактора та запуск проекту

шаблон

Працює на збірці без редактора (шаблон експорту)

подвійний

Запуск на збірці подвійної точності

одинак

Запуск на збірці одинарної точності

64

Працює у 64-бітовій збірці (будь-якої архітектури)

32

Працює у 32-бітовій збірці (будь-якої архітектури)

x86_64

Працюємо у 64-бітовій x86 збірці

x86_32

Працює у 32-бітовій x86 збірці

x86

Працює на збірці x86 (будь-яка розрядність)

arm64

Працює у 64-бітовій ARM збірці

arm32

Працює у 32-бітовій ARM збірці

arm

Працює на збірці ARM (будь-яка розрядність)

rv64

Працює на 64-розрядній збірці RISC-V

risc v

Працює на збірці RISC-V (будь-яка розрядність)

p pc64

Працює на 64-розрядній збірці PowerPC

p pc32

Працює на 32-розрядній версії PowerPC

p pc

Запуск на збірці PowerPC (будь-яка розрядність)

wasm 64

Запуск на 64-розрядній збірці WebAssembly (поки що неможливо)

wasm 32

Працює на 32-розрядній збірці WebAssembly

wasm

Запуск на збірці WebAssembly (будь-яка розрядність)

мобільний телефон

Основна операційна система є мобільною платформою

pc

Основною операційною системою є платформа ПК (робоча станція чи ноутбук)

web

Основна операційна система є переглядачем інтернету

nothreads

Запуск без підтримки потоків

threads

Запуск з підтримкою потоків

web_android

Host OS — це веб-браузер, що працює на Android

web_ios

Host OS — це веб-браузер, що працює на iOS

web linux bsd

Хост-ОС — це веб-браузер, що працює на Linux або *BSD

web_macos

Host OS — це веб-браузер, що працює на macOS

web_windows

Хост-ОС — це веб-браузер, що працює під керуванням Windows

etc

Підтримуються текстури, що використовують стиснення ETC1

etc2

Підтримуються текстури, що використовують стиснення ETC2

s3tc

Підтримуються текстури, що використовують стиснення S3TC (DXT / BC)

фільм

Movie Maker mode активний

shader_baker

Проєкт було експортовано з увімкненим shader baking (стосується лише експортованого проєкту, а не під час запуску в редакторі)

dedicated_server

Проект було експортовано як dedicated server (стосується лише експортованого проекту, а не запуску в редакторі)

Попередження

За винятком стиснення текстури, тегів функцій web_<platform> і movie, теги функцій за замовчуванням є незмінними. Це означає, що вони не змінюватимуться залежно від умов виконання. Наприклад, OS.has_feature("mobile") поверне false під час запуску проекту, експортованого в Інтернет, на мобільному пристрої.

Щоб перевірити, чи проект, експортований до Інтернету, запущено на мобільному пристрої, скористайтеся OS.has_feature("web_android") або OS.has_feature("web_ios").

Нетипові можливості

У збірку можна додати власні функції; використовуйте відповідне поле в export preset, щоб згенерувати їх:

../../_images/feature_tags1.webp

Примітка

Теги користувацьких функцій використовуються лише під час запуску експортованого проєкту (включно з Розміщення в один клік). Вони не використовуються під час запуску проєкту з редактора, навіть якщо пресет експорту, позначений як Runnable для вашої поточної платформи, має визначені теги користувацьких функцій.

Теги користувацьких функцій також не використовуються у скриптах EditorExportPlugin. Натомість теги функцій у EditorExportPlugin відображатимуть пристрій, на якому наразі працює редактор.

Заміна параметрів проєкту

Функції можна використовувати для перевизначення певних значень конфігурації в Налаштуваннях проекту. Це дозволяє краще налаштувати будь-яку конфігурацію під час збірки.

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

Панель налаштувань проекту

Вибрано бажану конфігурацію, яка фактично копіює її властивості на панель вище (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.