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.0 升级到 Godot 4.1

对于大多数使用 4.0 制作的游戏和应用程序来说,迁移到 4.1 应该相对安全。本页旨在介绍迁移项目时需要注意的所有事项。

破坏性更改

如果你要从 4.0 迁移到 4.1,这里列出的破坏性更改可能会影响到你。更改按照领域/系统分组。

警告

GDExtension API 在 4.1 中完全不兼容,因此未列入下表。更多信息请参见 将 GDExtension 更新到 4.1 部分。

这篇文章指出了每项破坏性改动是否会影响 GDScript,以及 C# 的破坏性改动是 二进制兼容 还是 源代码兼容

  • 二进制兼容 —— 现有二进制文件无需重新编译即可加载并成功执行,运行时的行为不会改变。

  • ** 源代码兼容** —— 在升级 Godot 时,源代码可成功编译,无需更改。

核心

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

Basis

looking_at 方法添加了可选的 use_model_front 参数

✔️

✔️

✔️

GH-76082

Object

get_meta_list 方法的返回类型从 PackedStringArray 改成了 Array[StringName]

✔️

GH-76418

Transform3D

looking_at 方法添加了可选的 use_model_front 参数

✔️

✔️

✔️

GH-76082

UndoRedo

create_action 添加了可选的 backward_undo_ops 参数

✔️

✔️

✔️

GH-76688

WorkerThreadPool

wait_for_task_completion 方法的返回类型从 void 改成了 Error

✔️

✔️

GH-77143

动画

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

AnimationNode

_process 方法添加了 test_only 参数

GH-75759

blend_input 方法添加了可选的 test_only 参数

✔️

✔️

✔️

GH-75759

blend_node 方法添加了可选的 test_only 参数

✔️

✔️

✔️

GH-75759

AnimationNodeStateMachinePlayback

get_travel_path 方法的返回类型从 PackedStringArray 改成了 Array[StringName]

✔️

GH-76418

2D 节点

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

PathFollow2D

移除了 lookahead 属性

GH-72842

3D 节点

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

Geometry3D

方法 segment_intersects_convexplanes 参数类型从无类型的 Array 改为 Array[Plane]

✔️

✔️

GH-76418

MeshInstance3D

方法 create_multiple_convex_collisions 增加了一个新的 settings 可选参数

✔️

✔️

✔️

GH-72152

Node3D

方法 look_at 增加了一个新的 use_model_front 可选参数

✔️

✔️

✔️

GH-76082

方法 look_at_from_position 增加了一个新的 use_model_front 可选参数

✔️

✔️

✔️

GH-76082

GUI 节点

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

CodeEdit

方法 add_code_completion_option 添加了一个新的 location 可选参数

✔️

✔️

✔️

GH-75746

RichTextLabel

方法 push_list 增加了一个新的 bullet 可选参数

✔️

✔️

✔️

GH-75017

方法 push_paragraph 增加了一个新的 justification_flags 可选参数

✔️

✔️

✔️

GH-75250

方法 push_paragraph 增加了一个新的 tab_stops 可选参数

✔️

✔️

✔️

GH-76401

Tree

方法 edit_selected 增加了一个新的 force_edit 可选参数

✔️

✔️

✔️

GH-76794

物理

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

Area2D

属性 priority 类型从 float 改为 int

GH-72749

Area3D

属性 priority 类型从 float 改为 int

GH-72749

PhysicsDirectSpaceState2D

方法 collide_shape 将返回类型从 Array[PackedVector2Array] 改为 Array[Vector2]

GH-75260

PhysicsDirectSpaceState3D

方法 collide_shape 将返回类型从 Array[PackedVector3Array] 改为 Array[Vector3]

GH-75260

渲染

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

RDShaderFile

方法 get_version_list 将返回类型从 PackedStringArray 改为 Array[StringName]

✔️

GH-76418

RenderingDevice

方法 draw_list_beginstorage_textures 参数类型从无类型的 Array 改为 Array[RID]

✔️

✔️

GH-76418

RenderingServer

方法 global_shader_parameter_get_list 将返回类型从 PackedStringArray 改为 Array[StringName]

✔️

GH-76418

SurfaceTool

方法 add_triangle_fantangents 参数类型从无类型的 Array 改为 Array[Plane]

✔️

✔️

GH-76418

网络

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

WebRTCPeerConnectionExtension

方法 _create_data_channel 将返回类型从 Object 改为 WebRTCDataChannel

✔️

✔️

GH-78237

编辑器插件

更改

GDScript 兼容

C# 二进制兼容

C# 源代码兼容

引入

AnimationTrackEditPlugin

AnimationTrackEditPlugin 类型已移除

GH-76413

EditorInterface

EditorInterface 类现在继承自 Object 而不是 Node

✔️

GH-76176

方法 set_movie_maker_enabled 替换为 movie_maker_enabled 属性

✔️

GH-76176

方法 is_movie_maker_enabled 替换为 movie_maker_enabled 属性

✔️

GH-76176

EditorResourcePreviewGenerator

_generate 方法添加了 metadata 参数

GH-64628

_generate_from_path 方法添加了 metadata 参数

GH-64628

EditorUndoRedoManager

create_action 添加了可选的 backward_undo_ops 参数

✔️

✔️

✔️

GH-76688

行为更改

4.1 中引入了一些行为的更改,你可能需要调整项目。

更改

引入

SubViewportContainer

当输入事件应传播到 SubViewport 及其子节点时,SubViewportContainer.mouse_filter 现在需要改为 MOUSE_FILTER_STOPMOUSE_FILTER_PASS。详见 GH-79271

GH-57894

如果多层 SubViewportContainer 节点都应接