从 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:// path(GH-97912)方式。这是一个破坏性改动,如果你的脚本或者序列化文件中依赖 ``res://``路径,很可能会导致问题。
例如,导出的文件数组中的可能包含混合的 uid:// 和 res:// 的路径,尤其是他们一部分在检查器编辑过。
在 4.4 版本中,保留``res://格式的唯一方法是手动编辑`.tscn` 或 `.tres` 文件,使用文本编辑器进行修改。从 Godot 4.5 开始,可以使用一个新的注解 ``@export_file_path 来显式保留旧的行为,并导出原始的 res:// 路径。
GUI 节点
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
|---|---|---|---|---|
RichTextLabel |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
|
✔️ |
✔️ |
✔️ |
|
GraphEdit |
||||
|
✔️ |
✔️ |
✔️ |
|
信号 |
❌ |
❌ |
❌ |
物理
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
|---|---|---|---|---|
SoftBody3D |
||||
|
✔️ |
✔️ |
✔️ |
渲染
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
|---|---|---|---|---|
CPUParticles2D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
CPUParticles3D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
GPUParticles2D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
GPUParticles3D |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
RenderingDevice |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
|
❌ |
✔️ |
✔️ |
|
|
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
RenderingServer |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
Shader |
||||
方法 |
✔️ |
❌ |
❌ |
|
方法 |
✔️ |
❌ |
✔️ |
|
VisualShaderNodeCubemap |
||||
属性 |
✔️ |
❌ |
❌ |
|
VisualShaderNodeTexture2DArray |
||||
属性 |
✔️ |
❌ |
❌ |
备注
在 C# 中,枚举 RenderingDevice.StorageBufferUsage 由于绑定生成器检测枚举前缀的方式而破坏了兼容性。在 GH-100062 中向该枚举添加了新成员,导致枚举成员被重命名。
编辑器插件
更改 |
GDScript 兼容 |
C# 二进制兼容 |
C# 源代码兼容 |
引入 |
|---|---|---|---|---|
EditorInterface |
||||
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
方法 |
✔️ |
✔️ |
✔️ |
|
EditorSceneFormatImporter |
||||
方法 |
❌ |
❌ |
❌ |
|
EditorTranslationParserPlugin |
||||
方法 |
❌ |
❌ |
❌ |
备注
方法 _get_import_flags 从未被引擎调用。尽管会造成兼容性被破坏,但用户实际无法依赖此方法影响引擎行为,因此被移除。
行为更改
核心
备注
Curve 资源现在强制执行数值范围,若有点位超出默认 [0, 1] 范围,则需调整 min_value 和 max_value 。
渲染
备注
VisualShaderNodeVec4Constant 着色器节点的输入类型已改为 Vector4 ,用户需在常量中重新创建数值。
CSG
Android
备注
Android 传感器事件现默认禁用(GH-94799)。需使用传感器事件的项目可在项目设置的 输入设备 > 传感器 中按需启用。