Godot 4.7.1 发布:聚焦 2D、Curve3D 与动画配置的维护更新

2026-07-15 29 预计阅读时间: 1 分钟
来源: oschina.net AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

Godot Engine 4.7.1 是一次以稳定性为主的维护版本。共有 42 位贡献者提交了 78 项修复,涉及 2D 编辑器、3D 曲线、动画配置和 Asset Library 等模块。对正在使用 Godot 4.7 的团队来说,这类版本通常不要求调整架构,但仍应针对编辑器工作流和资源序列化执行一轮回归测试。

三项值得优先检查的改动

2D 编辑器拖放行为得到改进

本次更新改进了 2D 编辑器中的拖放代码。来源摘要没有展开具体交互细节,因此不能据此假设所有拖放问题都已解决。不过,如果项目大量依赖从文件系统面板向场景拖入纹理、脚本或场景资源,升级后应重点验证这些路径:

  • 将 PNG、SVG 等纹理拖入 2D 视口;
  • 将已有场景拖入当前场景,确认实例化结果;
  • 拖动脚本或其他资源时,确认节点类型和资源引用没有变化;
  • 保存并重新打开场景,检查资源路径是否保持稳定。

这类编辑器改动看似只影响操作手感,实际也可能触及节点创建、资源绑定和撤销历史。测试时不要只看“能不能拖进去”,还要执行撤销、重做、保存和重新加载。

闭合 Curve3D 的端点控制柄被修复

3D 部分修复了闭合 Curve3D 的首尾点缺少入射或出射控制点的问题。道路、轨道、管线、巡逻路径和程序化网格都可能依赖闭合曲线;端点控制柄异常时,接缝附近可能出现切线突变、网格扭曲或运动方向跳变。

升级后建议检查所有闭合路径的接缝,尤其是通过编辑器手动调整过首尾控制柄的资源。除了观察曲线形状,还要让相机、车辆或角色完整运行一圈,因为方向不连续的问题在静态视图里未必明显。

动画折叠配置减少了不必要的文件访问

动画模块现在只在保存或加载项目时访问动画折叠配置文件。这个变化限定的是配置文件访问时机,而不是动画播放或动画资源格式。它有望减少编辑过程中的无关文件访问,也能降低某些版本控制工具、文件监控器或同步软件被频繁触发的概率。

团队仍应检查两个方面:编辑器重启后动画面板的折叠状态是否符合预期,以及项目目录中是否出现意外修改。尤其不要把编辑器局部状态文件与需要共享的动画资源混为一谈。

可以这样实践:建立一个最小升级验证流程

下面的脚本假设 Godot 可执行文件名为 godot。如果本机使用其他名称,可以通过 GODOT_BIN 指定,例如 GODOT_BIN=godot4.7.1。脚本会复制项目、清理复制目录中的导入缓存,然后以无界面模式加载项目,避免直接改动工作目录。

#!/usr/bin/env bash
set -euo pipefail

GODOT_BIN="${GODOT_BIN:-godot}"
PROJECT_DIR="${1:-.}"
WORK_DIR="$(mktemp -d)"
trap 'rm -rf "$WORK_DIR"' EXIT

cp -R "$PROJECT_DIR"/. "$WORK_DIR"/
rm -rf "$WORK_DIR/.godot"

"$GODOT_BIN" --version
"$GODOT_BIN" --headless --path "$WORK_DIR" --editor --quit

echo "Godot headless project load completed: $WORK_DIR"

将它保存为 verify-godot-upgrade.sh 后运行:

chmod +x verify-godot-upgrade.sh
GODOT_BIN=/path/to/godot-4.7.1 ./verify-godot-upgrade.sh /path/to/project

无界面加载只能发现导入失败、脚本解析错误和部分资源问题,不能覆盖 2D 拖放或 Curve3D 编辑器交互。闭合曲线还可以增加一个轻量级数据冒烟测试。以下示例创建首尾带控制柄的闭合曲线,并确认控制柄数据能够被 API 读取;它不是上游缺陷的精确复现,只适合作为项目级回归检查的起点。

extends SceneTree

func _init() -> void:
    var curve := Curve3D.new()
    curve.add_point(
        Vector3(0, 0, 0),
        Vector3(-2, 0, 0),
        Vector3(2, 0, 0)
    )
    curve.add_point(
        Vector3(8, 0, 0),
        Vector3(-2, 0, 2),
        Vector3(2, 0, -2)
    )
    curve.closed = true

    assert(curve.get_point_in(0) != Vector3.ZERO)
    assert(curve.get_point_out(0) != Vector3.ZERO)
    assert(curve.get_point_in(curve.point_count - 1) != Vector3.ZERO)
    assert(curve.get_point_out(curve.point_count - 1) != Vector3.ZERO)

    print("Curve3D closed-end controls are present")
    quit()

把文件命名为 test_curve3d.gd,在 Godot 项目目录中执行:

godot --headless --path . --script test_curve3d.gd

真正依赖编辑器序列化的项目,还应加载已有 .tres 或场景中的 Curve3D 资源,而不是只测试运行时创建的数据。

升级前后的落地清单

维护版本也可能改变编辑器生成的缓存和局部配置,因此不要直接让整个团队同时切换。更稳妥的做法是先选取一个包含 2D 场景、闭合 3D 曲线和动画面板配置的代表性项目进行验证。

  • 记录当前 Godot 版本,并确保项目已提交到版本控制;
  • 用 4.7.1 打开项目后检查导入、脚本解析和启动日志;
  • 回归 2D 资源拖放、撤销、重做和场景重新加载;
  • 检查闭合 Curve3D 的接缝、控制柄以及沿路径运动的方向连续性;
  • 重启编辑器,验证动画面板折叠状态与项目文件变更;
  • 审阅升级产生的文件差异,不要盲目提交缓存或个人编辑器状态;
  • 对使用插件、原生扩展或自定义构建的项目,再执行完整导出测试。

Godot 4.7.1 的重点是修正具体问题,而不是引入新的开发范式。已经运行在 4.7 系列上的项目可以优先评估升级,但涉及关键生产构建时,仍应保留旧版可执行文件和可复现的导出环境,确认编辑器行为与最终产物都稳定后再统一切换。


相关推荐