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...
Feature-Tags
Einführung
Godot verfügt über ein spezielles System zur Kennzeichnung der Verfügbarkeit von Features. Jedes Feature wird als String dargestellt, der sich auf viele der folgenden Elemente beziehen kann:
Plattformname.
Plattformarchitektur (64-Bit oder 32-Bit, x86 oder ARM).
Plattformtyp (Desktop, Mobile, Web).
Unterstützte Texturkomprimierungsalgorithmen auf der Plattform.
Ob ein Build
debugoderreleaseist (debugenthält den Editor).Ob das Projekt über den Editor oder eine "eigenständige" Binärdatei ausgeführt wird.
Viele weitere Dinge.
Features can be queried at runtime from the singleton API by calling:
OS.has_feature(name)
OS.HasFeature(name);
GDExtension verwendet die Betriebssystem-Tags, um zu bestimmen, welche Bibliotheken geladen werden sollen. Zum Beispiel wird eine Bibliothek für linux.debug.editor.x86_64 nur auf einem Debug-Editor geladen, der für Linux x86_64 gebaut wurde.
Default-Funktionen
Hier ist eine Liste der meisten Feature-Tags in Godot. Beachten Sie, dass bei ihnen die Groß- und Kleinschreibung wichtig ist:
Feature-Tag |
Beschreibung |
|---|---|
android |
Läuft auf Android (aber nicht innerhalb eines Webbrowsers) |
bsd |
Läuft auf *BSD (aber nicht in einem Webbrowser) |
linux |
Läuft unter Linux (aber nicht innerhalb eines Webbrowsers) |
macos |
Läuft unter macOS (aber nicht in einem Webbrowser) |
ios |
Läuft unter iOS (aber nicht innerhalb eines Webbrowsers) |
visionos |
Running on visionOS (but not within a Web browser) |
windows |
Läuft unter Windows |
linuxbsd |
Läuft unter Linux oder *BSD |
debug |
Läuft auf einem Debug-Build (einschließlich des Editors) |
release |
Läuft auf einem Release-Build |
editor |
Läuft auf einem Editor-Build |
editor_hint |
Running on an editor build, and inside the editor |
editor_runtime |
Running on an editor build, and running the project |
template |
Läuft auf einem Nicht-Editor-Build (Exportvorlage) |
double |
Läuft auf einem Double-Precision-Build |
single |
Läuft auf einem Single-Precision-Build |
64 |
Läuft auf einem 64-bit Build (jede Architektur) |
32 |
Läuft auf einem 32-bit Build (jede Architektur) |
x86_64 |
Läuft auf einem 64-bit x86 Build |
x86_32 |
Läuft auf einem 32-bit x86 Build |
x86 |
Läuft auf einem x86 Build (jede Bitgröße) |
arm64 |
Läuft auf einem 64-bit ARM Build |
arm32 |
Läuft auf einem 32-Bit ARM Build |
arm |
Läuft auf einem 64-bit Build (jede Bitgröße) |
rv64 |
Läuft auf einem 64-bit RISC-V Build |
riscv |
Läuft auf einem RISC-V-Build (jede Bitgröße) |
ppc64 |
Läuft auf einem 64-Bit-PowerPC-Build |
ppc32 |
Läuft auf einem 32-Bit-PowerPC-Build |
ppc |
Läuft auf einem PowerPC-Build (jede Bitgröße) |
wasm64 |
Läuftg auf einem 64-Bit-WebAssembly-Build (noch nicht möglich) |
wasm32 |
Läuft auf einem 32-Bit-WebAssembly-Build |
wasm |
Läuft auf einem WebAssembly-Build (beliebige Bitgröße) |
mobile |
Host-Betriebssystem ist eine mobile Plattform |
pc |
Host-Betriebssystem ist eine PC-Plattform (Desktop/Laptop) |
web |
Das Host-Betriebssystem ist ein Webbrowser |
nothreads |
Running without threading support |
threads |
Running with threading support |
web_android |
Host OS ist ein Webbrowser, der auf Android läuft |
web_ios |
Host OS ist ein Webbrowser, der auf iOS läuft |
web_linuxbsd |
Host-Betriebssystem ist ein Webbrowser, der unter Linux oder *BSD läuft |
web_macos |
Host OS ist ein Webbrowser, der unter macOS läuft |
web_windows |
Host-Betriebssystem ist ein Webbrowser, der unter Windows läuft |
etc |
Texturen mit ETC1-Komprimierung werden unterstützt |
etc2 |
Texturen mit ETC2-Komprimierung werden unterstützt |
s3tc |
Texturen die S3TC (DXT/BC)-Kompression nutzen, werden unterstützt |
movie |
Movie Maker mode ist aktiv |
shader_baker |
Project was exported with shader baking enabled (only applies to the exported project, not when running in the editor) |
dedicated_server |
Project was exported as a dedicated server (only applies to the exported project, not when running in the editor) |
Warnung
With the exception of texture compression, web_<platform> and
movie feature tags, default feature tags are immutable.
This means that they will not change depending on runtime conditions.
For example, OS.has_feature("mobile") will return false
when running a project exported to Web on a mobile device.
To check whether a project exported to Web is running on a mobile device,
use OS.has_feature("web_android") or OS.has_feature("web_ios").
Benutzerdefinierte Features
Es ist möglich, benutzerdefinierte Features zu einem Build hinzuzufügen; verwenden Sie dazu das entsprechende Feld in der Exportvorgabe, die zur Erstellung des Builds verwendet wurde:
Bemerkung
Benutzerdefinierte Feature-Tags werden nur verwendet, wenn das exportierte Projekt ausgeführt wird (auch mit Ein-Klick-Auslieferung). Sie werden nicht verwendet, wenn das Projekt vom Editor aus ausgeführt wird, selbst wenn die Exportvorgabe, die für Ihre aktuelle Plattform als Runnable markiert ist, benutzerdefinierte Featuretags definiert hat.
Custom feature tags are also not used in EditorExportPlugin scripts. Instead, feature tags in EditorExportPlugin will reflect the device the editor is currently running on.
Projekteinstellungen überschreiben
Features können verwendet werden, um bestimmte Konfigurationswerte in den Projekteinstellungen außer Kraft zu setzen. Dadurch können Sie eine beliebige Konfiguration beim Erstellen eines Builds besser anpassen.
Im folgenden Beispiel wird ein anderes Icon für den Demo-Build des Spiels hinzugefügt (der in einer speziellen Exportvorgabe angepasst wurde, die wiederum nur Demo-Levels enthält).
The desired configuration is selected, which effectively copies its properties to the panel above (1). The "demo_build" feature tag is selected (2). The configuration is added to the project settings (3).
After overriding, a new field is added for this specific configuration.
Bemerkung
Wenn Sie die Projekteinstellungen "override.cfg"-Funktionalität verwenden (die nichts mit Featuretags zu tun hat), denken Sie daran, dass Featuretags weiterhin gelten. Stellen Sie daher sicher, dass Sie auch die Einstellung mit dem/den gewünschten Featuretag(s) überschreiben, wenn Sie wollen, dass diese die Basisprojekteinstellungen auf allen Plattformen und Konfigurationen überschreiben.
Default-Überschreibungen
Es gibt bereits eine Vielzahl von Einstellungen, die standardmäßig mit Überschreibungen versehen sind; sie sind in vielen Abschnitten der Projekteinstellungen zu finden.
Taking feature tags into account when reading project settings
By default, feature tags are not taken into account when reading project settings using the typical approaches (ProjectSettings.get_setting or ProjectSettings.get). Instead, you must use ProjectSettings.get_setting_with_override.
For example, with the following project settings:
[section]
subsection/example = "Release"
subsection/example.debug = "Debug"
Using ProjectSettings.get_setting("section/subsection/example") will return
"Release" regardless of whether a debug build is currently running. On the
other hand, ProjectSettings.get_setting_with_override("section/subsection/example")
will obey feature tags and will return "Debug" if using a debug build.
Anpassen des Builds
Featuretags können auch verwendet werden, um einen Build-Prozess anzupassen, indem man ein eigenes ExportPlugin schreibt. Sie werden auch verwendet, um festzulegen, welche Shared Library in GDExtension geladen und exportiert wird.