Godot 4.6.3:86 项修复让日常开发更顺手

2026-05-22 25 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:7 分钟

开源游戏引擎 Godot 刚发布了 4.6.3 维护版本。41 位贡献者合力提交了 86 项修复,覆盖 2D、3D、动画等多个模块。虽然不是大版本,但其中好几项修的是编辑器里让人反复踩坑的小毛病——如果你正在用 4.6 系列做项目,升级的性价比很高。

TileMap 编辑体验的细节打磨

TileMap 是 2D 游戏开发中使用频率最高的节点之一。这次修复了一个容易忽略但实际很烦的问题:在检查器(Inspector)中修改 TileMap 属性时,图层选择器不会同步更新(GH-117256)。

这意味着你改完图层相关参数后,还得手动切换图层才能看到效果——操作链被打断,尤其在多图层地图编辑时非常明显。4.6.3 之后,检查器的改动会即时反映到图层选择器,编辑流程更连贯。

3D 编辑器的两处修正

3D 模块修了两个编辑器层面的 bug:

  • Marker3D 小工具颜色异常(GH-116995):Marker3D 的编辑器 gizmo 在负轴方向显示比预期更暗,视觉上容易误判坐标方向。这个修复让轴线颜色在正负方向保持一致,定位参考点时不再需要"脑补"。
  • GridMap 粘贴单元格旋转错误(GH-116683):在 GridMap 中粘贴单元格时,旋转值会被错误计算——你复制一个旋转过的网格块,粘贴出来方向却不对。这对做模块化场景搭建的工作流影响很大,修复后粘贴行为与预期一致。

动画及其他模块

摘要还提到了 Animation 模块的修复(具体条目被截断),但根据 Godot 4.6 系列的维护节奏,动画相关修复通常集中在 AnimationPlayer 的轨道编辑、关键帧同步等编辑器交互问题上。此外,86 项修复意味着渲染、物理、GDScript、平台适配等模块也有零散修正,完整列表可在官方 GitHub Release 页面查看。

升级实操:从 4.6.x 迷你升级到 4.6.3

维护版本不引入新功能,API 不变,升级风险极低。以下是几种常见安装方式:

方式一:直接下载预编译版本

# 下载 Linux 64 位版本(根据你的平台替换 URL 中的 linux.x86_64)
wget https://github.com/godotengine/godot/releases/download/4.6.3-stable/Godot_v4.6.3-stable_linux.x86_64.zip

unzip Godot_v4.6.3-stable_linux.x86_64.zip
chmod +x Godot_v4.6.3-stable_linux.x86_64

# 用新版本打开现有项目
./Godot_v4.6.3-stable_linux.x86_64

方式二:从源码编译(适合需要自定义模块的开发者)

# 克隆稳定分支
git clone https://github.com/godotengine/godot.git
cd godot
git checkout 4.6.3-stable

# 编译编辑器版本(Linux,其他平台参考官方文档)
scons platform=linuxbsd target=editor -j$(nproc)

# 编译完成后运行
./bin/godot.linuxbsd.editor.x86_64

方式三:Homebrew(macOS)

brew install godot
# 已安装则直接升级
brew upgrade godot

升级后首次打开项目,Godot 会自动重新导入资源,耗时取决于项目大小。建议在升级前备份 project.godot.godot/ 目录。

快速验证:确认你受益的修复

升级完成后,可以用以下 GDScript 脚本快速验证 GridMap 粘贴修复是否生效:

# test_gridmap_paste.gd — 挂到场景中的任意 Node 上运行
extends Node

func _ready():
    var grid_map = GridMap.new()
    add_child(grid_map)

    # 创建一个带旋转的网格实例
    var mesh_library = MeshLibrary.new()
    var test_mesh = BoxMesh.new()
    test_mesh.size = Vector3(1, 1, 1)
    var item_id = mesh_library.create_item(0)
    mesh_library.set_item_mesh(item_id, test_mesh)
    grid_map.mesh_library = mesh_library

    # 在 (0, 0, 0) 放置一个旋转 90 度的单元格
    grid_map.set_cell_item(Vector3i(0, 0, 0), item_id, Basis(Vector3.UP, PI / 2))

    # 读取旋转值,确认 Basis 被正确保存
    var basis = grid_map.get_cell_item_basis(Vector3i(0, 0, 0))
    print("单元格 Basis 旋转角: ", basis.get_euler())

    # 如果输出接近 (0, PI/2, 0),说明旋转存储正确
    # 在 4.6.3 之前的版本中,粘贴操作会破坏这个旋转值
    print("验证完成 — 如角度正确,GridMap 旋转修复生效")

将脚本保存为 test_gridmap_paste.gd,挂到任意节点上运行,检查控制台输出即可。

升级建议与注意事项

  • 升级优先级:如果你在项目中大量使用 TileMap 多图层编辑或 GridMap 模块化搭建,这次修复直接改善日常操作,建议尽快升级。Marker3D 的修复对 3D 场景布局也有帮助。
  • 风险边界:维护版本不改变 API,但极少数情况下修复可能改变编辑器的默认行为(比如图层选择器现在会自动更新)。如果你有依赖"旧行为"的自动化脚本,升级后跑一遍测试。
  • 版本选择:4.6.3 是当前 4.6 系列的最新稳定版。如果还在 4.5 或更早版本,建议先升级到 4.6.0 再跳到 4.6.3,避免跨多个维护版本的跳跃。

86 项修复不算多,但每一项背后都是社区里有人踩过的坑。维护版本的意义就在这里——不追求新功能,而是让已有功能真正好用。


相关推荐