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...
功能標籤
前言
Godot 中有一個特殊的系統,能夠用來標記一個功能是否可用。每個 功能 都以字串來表示,可以參照下列各種東西:
平台名稱。
平台架構 (64 位元或 32 位元,x86 或 ARM)。
平台型別 (桌面、行動裝置、網頁)。
平台所支援的紋理壓縮演算法。
建置為
debug還是release(debug包含編輯器)。專案是在編輯器中執行還是以「獨立」二進位檔執行。
許多其他功能。
可以在執行階段透過單例 API 查詢功能標籤:
OS.has_feature(name)
OS.HasFeature(name);
GDExtension 使用作業系統功能標籤來決定要載入的庫。例如,「linux.debug.editor.x86_64」的程式庫將僅在 Linux x86_64 的偵錯編輯器版本上載入。
預設功能
以下列出了 Godot 中大多數的功能標籤。請注意,這些標籤有 區分大小寫 :
功能標籤 |
說明 |
|---|---|
android |
在 Android 上運作(非 Web 瀏覽器) |
bsd |
在 *BSD 上運行(非 Web 瀏覽器) |
linux |
在 Linux 上運作(非 Web 瀏覽器) |
macos |
在 macOS 上運作(非 Web 瀏覽器) |
ios |
在 iOS 上運作(非 Web 瀏覽器) |
visionos |
在 visionOS 上運作(非 Web 瀏覽器) |
Windows |
在 Windows 上執行 |
linuxbsd |
在 Linux 或 *BSD 上運作 |
debug |
在除錯建置中執行 (包含編輯器) |
release |
在發行版本建置上執行 |
editor |
在編輯器建置中執行 |
editor_hint |
在編輯器建置中執行,且於編輯器內部執行 |
editor_runtime |
在編輯器建置中執行,且執行專案 |
template |
在非編輯器建置中執行 |
double |
在雙精度版本建置上執行 |
single |
在單精度版本建置上執行 |
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 建置上執行 |
riscv |
在 RISC-V 架構建置上執行(不限位元數) |
ppc64 |
在 64 位元 PowerPC 建置上執行 |
ppc32 |
在 32 位元 PowerPC 建置上執行 |
ppc |
在 PowerPC 架構建置上執行(不限位元數) |
wasm64 |
在 64 位元 WebAssembly 建置上執行(目前尚不支援) |
wasm32 |
在 32 位元 WebAssembly 建置上執行 |
wasm |
在 WebAssembly 架構建置上執行(不限位元數) |
mobile |
主機作業系統為行動裝置平台 |
pc |
主機作業系統為 PC 平台 (桌上型電腦/膝上型電腦) |
web |
主機作業系統為網頁瀏覽器 |
nothreads |
在無執行緒支援的環境中執行 |
threads |
在有執行緒支援的環境中執行 |
web_android |
主機作業系統為執行於 Android 的網頁瀏覽器 |
web_ios |
主機作業系統為執行於 iOS 的網頁瀏覽器 |
web_linuxbsd |
主機作業系統為執行於 Linux 或 *BSD 的網頁瀏覽器 |
web_macos |
主機作業系統為執行於 macOS 的網頁瀏覽器 |
web_windows |
主機作業系統為執行於 Windows 的網頁瀏覽器 |
etc |
支援以 ETC1 壓縮紋理 |
etc2 |
支援以 ETC2 壓縮紋理 |
s3tc |
支援以 S3TC (DXT/BC) 壓縮紋理 |
movie |
Movie Maker 模式 已啟用 |
shader_baker |
專案已在啟用 shader baking 的情況下匯出(僅適用於已匯出的專案,不適用於在編輯器中執行時) |
dedicated_server |
專案已匯出為 dedicated server (僅適用於已匯出的專案, 不適用於在編輯器中執行時) |
警告
除了紋理壓縮、web_<platform> 以及 movie 這些功能標籤外,預設功能標籤皆為**不可變動**。這表示它們*不會*依據執行時條件而改變。例如,當專案被匯出到 Web 並在行動裝置上執行時,OS.has_feature("mobile") 會返回 false。
要判斷匯出為 Web 的專案是否在行動裝置上執行,請使用 OS.has_feature("web_android") or OS.has_feature("web_ios") 來進行檢查。
自定功能
可以在建置中新增自定功能。在 匯出預設 中使用相應的欄位來產生自定功能:
備註
自訂功能標籤只會在運作匯出後的專案中使用(包括 單鍵部署)。從編輯器中運作專案時**不會使用**,即便標記為**可執行**的匯出預設對應的平臺上存在自訂功能標籤。
自訂功能標籤在 EditorExportPlugin 指令碼中同樣不會被使用。相對地,EditorExportPlugin 中的功能標籤會反映編輯器目前執行所在的裝置。
覆寫專案設定
可以用功能來在 [專案設定] 中覆寫指定的組態設定值。這樣一來便能在建置時自定各種設定。
在下列範例中,Demo 版的遊戲使用不同的圖示 (圖示在林一個匯出預設設定中自定,並只會包含 Demo 關卡)。
所需的組態已選取,這實際上會將其屬性複製到上方的面板 (1)。「demo_build」功能標籤已選取 (2)。組態會被新增到專案設定 (3)。
覆寫後,會針對該設定新增一個專用欄位。
備註
當使用 專案設定的「override.cfg」功能 時 (這與功能標記無關),請記住功能標記仍然適用。因此,如果您希望它們在所有平台和配置上覆寫基礎專案設定,請務必也使用所需的功能標記來覆寫該設定。
預設覆寫
預設已經有許多設定會被覆蓋。專案設定中各個地方都有。
在讀取專案設定時考量功能標籤
預設情況下, 使用一般方式讀取專案設定時 ( 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 來使用功能標籤自定建置過程。ExportPlugin 也可以用來指定 GDNative 中要載入與匯出哪些共用程式庫。