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.

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 è debug o release (debug include 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)

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:

../../_images/feature_tags1.webp

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).

Il pannello delle Impostazioni del progetto

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.

../../_images/feature_tags3.webp

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.

../../_images/feature_tags4.webp

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.