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...
Tag di funzionalità
Introduzione
Godot ha un sistema speciale per etichettare la disponibilità delle funzionalità. Ogni funzionalità è rappresentata da una stringa, che può fare riferimento a molti dei seguenti aspetti:
Nome della piattaforma.
Architettura della piattaforma (64 bit o 32 bit, x86 o ARM).
Tipo di piattaforma (desktop, mobile, Web).
Algoritmi di compressione delle texture supportati sulla piattaforma.
Se una build è
debugorelease(debuginclude l'editor).Se il progetto è eseguito dall'editor o da un eseguibile "standalone".
Molte altre cose.
È possibile interrogare le funzionalità in fase di esecuzione dall'API singleton chiamando:
OS.has_feature(name)
OS.HasFeature(name);
I tag delle funzionalità del sistema operativo sono utilizzati da GDExtension per determinare quali librerie caricare. Ad esempio, una libreria per linux.debug.editor.x86_64 sarà caricata solo su una build dell'editor di debug per Linux x86_64.
Funzionalità predefinite
Ecco una lista della maggior parte dei tag di funzionalità in Godot. Si noti che sono sensibili alle maiuscole e alle minuscole:
Tag di funzionalità |
Descrizione |
|---|---|
android |
In esecuzione su Android (ma non all'interno di un browser Web) |
bsd |
In esecuzione su *BSD (ma non all'interno di un browser Web) |
linux |
In esecuzione su Linux (ma non all'interno di un browser Web) |
macos |
In esecuzione su macOS (ma non all'interno di un browser Web) |
ios |
In esecuzione su iOS (ma non all'interno di un browser Web) |
visionos |
In esecuzione su visionOS (ma non all'interno di un browser Web) |
windows |
In esecuzione su Windows |
linuxbsd |
In esecuzione su iOS |
debug |
In esecuzione su una build di debug (incluso l'editor) |
release |
In esecuzione su una build di rilascio |
editor |
In esecuzione su una build dell'editor |
editor_hint |
In esecuzione su una build dell'editor, e all'interno dell'editor |
editor_runtime |
In esecuzione su una build dell'editor, e eseguendo il progetto |
template |
In esecuzione su una build non dell'editor (modello di esportazione) |
double |
In esecuzione su una build a doppia precisione |
single |
In esecuzione su una build a singola precisione |
64 |
In esecuzione su una build a 64 bit (qualsiasi architettura) |
32 |
In esecuzione su una build a 32 bit (qualsiasi architettura) |
x86_64 |
In esecuzione su una build a 64 bit x86 |
x86_32 |
In esecuzione su una build a 32 bit x86 |
x86 |
In esecuzione su una build x64 (qualsiasi bit) |
arm64 |
In esecuzione su una build a 64 bit ARM |
arm32 |
In esecuzione su una build a 32 bit ARM |
arm |
In esecuzione su una build ARM (qualsiasi numero di bit) |
rv64 |
In esecuzione su una build RISC-V a 64 bit |
riscv |
In esecuzione su una build RISC-V (qualsiasi bit) |
ppc64 |
In esecuzione su una build PowerPC a 64 bit |
ppc32 |
In esecuzione su una build PowerPC a 32 bit |
ppc |
In esecuzione su una build PowerPC (qualsiasi bit) |
wasm64 |
In esecuzione su una build a 64 bit WebAssembly (non ancora possibile) |
wasm32 |
In esecuzione su una build WebAssembly a 32 bit |
wasm |
In esecuzione su una build WebAssembly (qualsiasi bit) |
mobile |
Il sistema operativo host è una piattaforma mobile |
pc |
Il sistema operativo host è una piattaforma PC (desktop/laptop) |
web |
Il sistema operativo host è un browser web |
nothreads |
In esecuzione senza supporto dei thread |
threads |
In esecuzione con supporto dei thread |
web_android |
Il sistema operativo host è un browser web in esecuzione su Android |
web_ios |
Il sistema operativo host è un browser web in esecuzione su iOS |
web_linuxbsd |
Il sistema operativo host è un browser web in esecuzione su Linux o *BSD |
web_macos |
Il sistema operativo host è un browser web in esecuzione su macOS |
web_windows |
Il sistema operativo host è un browser web in esecuzione su Windows |
etc |
Le texture che utilizzano una compressione ETC1 sono supportate |
etc2 |
Le texture che utilizzano una compressione ETC2 sono supportate |
s3tc |
Le texture che utilizzano una compressione S3TC (DXT/BC) sono supportate |
movie |
La modalità Movie Maker è attiva |
shader_baker |
Il progetto è stato esportato con shader baking abilitato (si applica solo al progetto esportato, non quando è in esecuzione nell'editor) |
dedicated_server |
Il progetto è stato esportato come server dedicato (si applica solo al progetto esportato, non quando è in esecuzione nell'editor) |
Avvertimento
Ad eccezione dei tag di funzionalità riguardo la compressione di texture, web_<platform> e movie, i tag predefiniti sono immutabili. Ciò significa che non cambieranno a seconda di condizioni durante l'esecuzione. Ad esempio, OS.has_feature("mobile") restituirà false quando si esegue un progetto esportato sul Web su un dispositivo mobile.
Per verificare se un progetto esportato sul Web è in esecuzione su un dispositivo mobile, utilizzare OS.has_feature("web_android") o OS.has_feature("web_ios").
Funzionalità personalizzate
È possibile aggiungere funzionalità personalizzate a una build; utilizzare il campo corrispondente nella preimpostazione di esportazione utilizzata per generarlo:
Nota
I tag di funzionalità personalizzati sono utilizzati solo quando si esegue il progetto esportato (anche con Distribuzione con un clic). Non sono utilizzati quando si esegue il progetto dall'editor, anche se la preimpostazione di esportazione segnata come Eseguibile per la piattaforma attuale ha tag di funzionalità personalizzati definiti.
I tag personalizzati non vengono nemmeno utilizzati negli script EditorExportPlugin. Invece, i tag in EditorExportPlugin rifletteranno il dispositivo su cui l'editor è attualmente in esecuzione.
Sovrascrivere le impostazioni del progetto
Le funzionalità si possono usare per sovrascrivere specifici valori di configurazione nelle Impostazioni del progetto. Ciò consente di personalizzare al meglio qualsiasi configurazione di una build.
Nell'esempio seguente, viene aggiunta un'icona diversa per la build demo del gioco (che è stata personalizzata in una speciale preimpostazione di esportazione, che, a sua volta, include solo i livelli demo).
La configurazione desiderata viene selezionata, che di fatto ne copia le proprietà nel pannello soprastante (1). Il tag di funzionalità "demo_build" viene selezionato (2). La configurazione viene aggiunta alle impostazioni del progetto (3).
Dopo aver sovrascritto, un nuovo campo viene aggiunto per questa configurazione specifica.
Nota
Quando si utilizza il file "override.cfg" per le impostazioni del progetto (che non è correlata ai tag di funzionalità), tenere presente che i tag di funzionalità sono comunque validi. Pertanto, assicurarsi di sovrascrivere anche l'impostazione con i tag di funzionalità desiderati se si desidera che sovrascrivano le impostazioni base del progetto su tutte le piattaforme e configurazioni.
Default overrides
Esistono già molte impostazioni che sono accompagnate da sovrascritture predefinite; è possibile trovarle in numerose sezioni delle impostazioni del progetto.
Tenere presenti i tag di funzionalità durante la lettura delle impostazioni del progetto
Normalmente, i tag delle funzionalità non vengono considerati se si leggono le impostazioni del progetto attraverso gli approcci tipici (ProjectSettings.get_setting o ProjectSettings.get). È invece necessario utilizzare ProjectSettings.get_setting_with_override.
Ad esempio, con le seguenti impostazioni del progetto:
[section]
subsection/example = "Release"
subsection/example.debug = "Debug"
Utilizzando ProjectSettings.get_setting("section/subsection/example") sarà restituito "Release" a prescindere che sia in esecuzione una build di debug. D'altra parte, ProjectSettings.get_setting_with_override("section/subsection/example") rispetterà i tag di funzionalità e restituirà "Debug" se si utilizza una build di debug.
Personalizzazione della compilazione
I tag di funzionalità possono servire anche per personalizzare un processo di build, scrivendo un ExportPlugin personalizzato. Servono inoltre per specificare quale libreria condivisa è caricata ed esportata in GDExtension.