從 Godot 4.1 升級到 Godot 4.2
對於大多數使用 4.1 製作的遊戲和應用程式來說,遷移到 4.2 應該相對安全。本頁旨在介紹遷移專案時需要注意的所有事項。
做出更改
如果你要從 4.1 遷移到 4.2,這裡列出的破壞性更改可能會影響到你。更改按照領域/系統群組。
警告
Mesh 資源格式在 4.2 版本中已變更,以支援 頂點與屬性壓縮 。這能提升算繪效能,尤其是在受限於記憶體頻寬的平台(如行動裝置)上。
仍然可以載入 Godot 4.0-4.1 的網格格式,但**無法**在舊版的 Godot 中載入 Godot 4.2 的網格格式。當開啟使用 4.2 之前的版本製作的 Godot 專案時,您可能會看到一個升級對話框,提供兩個選項:
重新啟動並升級: 升級專案中所有網格(Mesh)的格式並儲存到磁碟。選擇此選項後,將無法將專案降版回 Godot 4.2 之前的版本。請務必在選擇此選項*之前*,設定好版本控制系統並推送你的變更!
僅升級: 只在記憶體中升級網格格式,不會寫入磁碟。這樣一來,如果未來有需要,仍可將專案降版至 4.2 以前的 Godot 版本。缺點是每次載入專案時都會重新升級網格格式,導致載入速度變慢,這種載入延遲也會影響到導出的專案。網格資源的數量與複雜度會決定載入時間受影響的程度。
如果沒有出現此對話框,請在編輯器上方選擇 專案 > 工具 > 升級網格表面… 來手動執行升級。
這篇文章指出了每項破壞性改動是否會影響 GDScript,以及 C# 的破壞性改動是 二進位相容 還是 原始程式碼相容:
二進制相容 - 現有的二進制檔案無需重新編譯即可成功載入和執行,且運行時的行為不會改變。
** 原始程式碼相容** —— 在升級 Godot 時,原始程式碼可成功編譯,無需更改。
核心
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
節點 |
||||
常數 |
❌ |
✔️ |
❌ |
動畫
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
動畫播放器(AnimationPlayer) |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
❌ |
❌ |
|
訊號 |
✔️ |
❌ |
❌ |
|
訊號 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
動畫樹(AnimationTree) |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
❌ |
❌ |
|
訊號 |
✔️ |
❌ |
❌ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
❌ |
❌ |
建立節點
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
彈出選單(PopupMenu) |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
方法 |
✔️ |
✔️ |
✔️ |
算繪
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
匯入網格(ImporterMesh) |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
❌ |
❌ |
|
網格資料工具(MeshDataTool) |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
❌ |
❌ |
|
算繪 |
||||
列舉欄位 |
✔️ |
✔️ |
✔️ |
|
列舉欄位 |
✔️ |
✔️ |
✔️ |
|
列舉欄位 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
❌ |
❌ |
|
建立內容 |
||||
方法 |
✔️ |
✔️ |
✔️ |
文字
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
字型 |
||||
方法 |
✔️ |
❌ |
❌ |
|
方法 |
✔️ |
❌ |
❌ |
|
方法 |
✔️ |
✔️ |
✔️ |
GraphEdit
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
圖形編輯器(GraphEdit) |
||||
屬性 |
❌ |
✔️ |
✔️ |
|
方法 |
❌ |
✔️ |
✔️ |
|
屬性 |
❌ |
✔️ |
✔️ |
|
屬性 |
❌ |
✔️ |
✔️ |
|
圖形節點(GraphNode) |
||||
屬性 |
❌ |
❌ |
❌ |
|
訊號 |
❌ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
方法 |
❌ |
❌ |
❌ |
|
屬性 |
❌ |
❌ |
❌ |
|
訊號 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
✔️ |
✔️ |
|
屬性 |
❌ |
❌ |
❌ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
訊號 |
✔️ |
❌ |
❌ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
✔️ |
✔️ |
✔️ |
|
屬性 |
❌ |
❌ |
❌ |
|
屬性 |
❌ |
❌ |
❌ |
圖塊地圖(TileMap)
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
圖塊地圖(TileMap) |
||||
屬性 |
❌ |
✔️ |
✔️ |
XR
改動 |
GDScript 格式化字串 |
C# 二進位相容 |
C# 原始程式碼相容 |
簡介 |
|---|---|---|---|---|
XR 介面(XRInterface) |
||||
新增屬性 |
✔️ |
❌ |
❌ |
備註
這項變更會導致 C# 相容性問題,因為新增的屬性名稱與現有列舉型別名稱衝突,而 C# 綁定生成器會優先處理屬性,因此該列舉型別名稱已由 EnvironmentBlendMode 改為 EnvironmentBlendModeEnum。