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 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。