Up to date
This page is up to date for Godot 4.2
.
If you still find outdated information, please open an issue.
从 Godot 4.1 升级到 Godot 4.2¶
对于大多数使用 4.1 制作的游戏和应用程序来说,迁移到 4.2 应该相对安全。本页旨在介绍迁移项目时需要注意的所有事项。
破坏性更改¶
如果你要从 4.1 迁移到 4.2,这里列出的破坏性更改可能会影响到你。更改按照领域/系统分组。
警告
Mesh 资源格式在 4.2 中已更改,以允许 顶点和属性压缩 。这个更改可以提高渲染性能,尤其是在受内存带宽限制的平台(例如移动设备)上。
仍然可以加载 Godot 4.0-4.1 Mesh 格式,但在之前的 Godot 版本中 不可能 加载 Godot 4.2 Mesh 格式。打开使用 4.2 之前版本创建的 Godot 项目时,可能会出现一个升级对话框,其中会提供两个选项:
重启并升级: 升级项目中所有网格的网格格式,并将结果保存到磁盘。一旦选择,此选项可以防止将项目降级到 4.2 之前的 Godot 版本。请设置版本控制系统,并在 选择此选项之前 推送你的更改!
仅升级: 升级内存中的网格格式,但不将升级结果写入磁盘。如果将来有需要,这个设置可允许你将项目降级回到 4.2 之前的 Godot 版本。这个设置的缺点是每次加载项目都会变慢,因为每次加载项目时都需要升级网格格式。这些增加的加载时间也会影响导出的项目。 Mesh 资源的数量和复杂度决定了加载时间受影响的程度。
如果该对话框没有出现,请使用编辑器顶端的 项目 > 工具 > 升级网格表面...。
这篇文章指出了每项破坏性改动是否会影响 GDScript,以及 C# 的破坏性改动是 二进制兼容 还是 源代码兼容:
二进制兼容 —— 现有二进制文件无需重新编译即可加载并成功执行,运行时的行为不会改变。
** 源代码兼容** —— 在升级 Godot 时,源代码可成功编译,无需更改。
核心¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
节点 |
||||
常量 |
❌ |
✔️ |
❌ |
动画¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
AnimationPlayer |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
❌ |
❌ |
|
信号 |
✔️ |
❌ |
❌ |
|
信号 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
AnimationTree |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
❌ |
❌ |
|
信号 |
✔️ |
❌ |
❌ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
❌ |
❌ |
GUI 节点¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
PopupMenu |
||||
|
✔️ |
✔️ |
✔️ |
|
|
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
RichTextLabel |
||||
方法 |
✔️ |
✔️ |
✔️ |
渲染¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
ImporterMesh |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
❌ |
❌ |
|
MeshDataTool |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
❌ |
❌ |
|
RenderingDevice |
||||
枚举字段 |
✔️ |
✔️ |
✔️ |
|
枚举字段 |
✔️ |
✔️ |
✔️ |
|
枚举字段 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
❌ |
❌ |
|
SurfaceTool |
||||
方法 |
✔️ |
✔️ |
✔️ |
文本¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
字体 |
||||
方法 |
✔️ |
❌ |
❌ |
|
方法 |
✔️ |
❌ |
❌ |
|
方法 |
✔️ |
✔️ |
✔️ |
GraphEdit¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
GraphEdit |
||||
属性 |
❌ |
✔️ |
✔️ |
|
方法 |
❌ |
✔️ |
✔️ |
|
属性 |
❌ |
✔️ |
✔️ |
|
属性 |
❌ |
✔️ |
✔️ |
|
GraphNode |
||||
删除了属性 |
❌ |
❌ |
❌ |
|
信号 |
❌ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了方法 |
❌ |
❌ |
❌ |
|
删除了属性 |
❌ |
❌ |
❌ |
|
信号 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
✔️ |
✔️ |
|
删除了属性 |
❌ |
❌ |
❌ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
信号 |
✔️ |
❌ |
❌ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
属性 |
✔️ |
✔️ |
✔️ |
|
删除了属性 |
❌ |
❌ |
❌ |
|
删除了属性 |
❌ |
❌ |
❌ |
TileMap¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
TileMap |
||||
属性 |
❌ |
✔️ |
✔️ |
XR¶
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
---|---|---|---|---|
XRInterface |
||||
新增了属性 |
✔️ |
❌ |
❌ |
备注
这一更改破坏了 C# 中的兼容性,因为新属性和现有枚举的名称相冲突,而 C# 绑定生成器优先考虑属性,因此枚举类型由 EnvironmentBlendMode
重命名为 EnvironmentBlendModeEnum
。