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.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:// 路径。
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)。需使用传感器事件的项目可在项目设置的 输入设备 > 传感器 中按需启用。