從 Godot 4.3 升級到 Godot 4.4
對於大多數以 4.3 製作的遊戲與應用程式,遷移到 4.4 應該相對安全。此頁面旨在涵蓋專案遷移時需要留意的所有事項。
做出更改
如果你要從 4.3 遷移到 4.4,這裡列出的不相容變更可能會影響到你。變更依領域/系統分類整理。
這篇文章指出了每項破壞性改動是否會影響 GDScript,以及 C# 的破壞性改動是 二進位相容 還是 原始程式碼相容:
二進位相容 - 現有二進位檔可在無需重新編譯的情況下成功載入與執行,且執行時行為不會改變。
** 原始程式碼相容** —— 在升級 Godot 時,原始程式碼可成功編譯,無需更改。
核心
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
FileAccess |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
方法 |
✔️ |
❌ |
✔️ |
|
OS |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
❌ |
✔️ |
✔️ |
|
RegEx |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
Semaphore |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
TranslationServer |
||||
方法 |
✔️ |
✔️ |
✔️ |
匯出註解
警告
Godot 4.4 更動了 @export_file 的行為。當在屬性面板指派新值時,路徑現在會以 uid:// 參照儲存與回傳,而非傳統的 res:// 路徑(GH-97912)。這是 破壞性變更,若你的腳本或序列化檔案預期使用基於 res:// 的路徑,可能會造成問題。
例如,匯出的檔案陣列現在可能同時包含 uid:// 與 res:// 路徑,特別是在它們曾部分於屬性面板中編輯過的情況下。
在 4.4 中,保留 res:// 格式的唯一方法是以文字編輯器 手動編輯 .tscn 或 .tres 檔案。從 Godot 4.5 起,可使用新的註解 @export_file_path 來明確保留舊行為並匯出原始的 res:// 路徑。
建立節點
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
RichTextLabel |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
圖形編輯器(GraphEdit) |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
訊號 |
❌ |
❌ |
❌ |
物理
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
SoftBody3D |
||||
方法 |
✔️ |
✔️ |
✔️ |
算繪
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
CPUParticles2D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
CPUParticles3D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
GPUParticles2D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
GPUParticles3D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
算繪 |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
❌ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
RenderingServer |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
Shader |
||||
方法 |
✔️ |
❌ |
❌ |
|
方法 |
✔️ |
❌ |
✔️ |
|
VisualShaderNodeCubemap |
||||
屬性 |
✔️ |
❌ |
❌ |
|
VisualShaderNodeTexture2DArray |
||||
屬性 |
✔️ |
❌ |
❌ |
備註
在 C# 中,列舉 RenderingDevice.StorageBufferUsage 因綁定產生器判定列舉前綴的方式而出現相容性破壞。GH-100062 新增了成員,導致列舉成員被重新命名。
編輯器外掛程式
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
編輯器界面 (C++) |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
EditorSceneFormatImporter |
||||
方法 |
❌ |
❌ |
❌ |
|
EditorTranslationParserPlugin |
||||
方法 |
❌ |
❌ |
❌ |
備註
方法 _get_import_flags 從未被引擎使用。雖然會造成相容性破壞,但因為使用者無法依賴此方法來影響引擎行為,因此予以移除。
做出更改
核心
備註
Curve 資源現在會強制套用其數值範圍,因此如果任何節點超出預設的 [0, 1] 範圍,就需要調整 min_value 與 max_value。
算繪
備註
VisualShaderNodeVec4Constant 著色器節點的輸入型別已改為 Vector4。使用者需要重新建立其常數中的數值。
CSG
Android
備註
Android 感測器事件不再預設啟用(GH-94799)。使用感測器事件的專案可於專案設定的 Input Devices > Sensors 依需求啟用。