2026-08-03 引擎周报
✨ 新功能
- Control Rig 约束系统全面焕新:在动画编辑器模式中引入了全新的约束编辑 UX。新面板支持直接选择和编辑约束、可视化约束(绘制父子点与连线)、弹出菜单不再被屏幕边缘裁剪、面板加入滚动条与快速烘焙按钮,彻底移除了右键菜单中的烘焙入口。约束行的按钮布局针对窄面板做了防裁剪处理,并修复了动态偏移等问题。
- Control Rig 图表交互强化:按住 Ctrl 拖动变量到图表创建 Getter 节点,按住 Alt 创建 Setter 节点;蓝图独立的 Control Rig 资产现在显示完整的图表右键上下文菜单;添加变量按钮会自动滚动到新变量并进入编辑模式。
- Control Rig 模块化流程优化:模块化 Rig 编辑器的事件队列标签页现在跟随模块层级选择;模块详情中的数组连接器也展示重置、使用选中项和选择元素等操作;添加了重新加载按钮,当 Rig 的骨骼网格发生变化时视图会显示刷新按钮。
- UAF 绑定与数据流改进:可绑定值绑定的 UI/UX 全面升级,支持 lozenge 样式、拖放和实时验证;变量重命名/替换功能扩展到所有资产类型的可绑定值绑定。绑定选项从骨架定义移至 UAF 组件,并提供对应的 API。Montage 组件将惯性化请求查找方法公开为公共 API。新增立即通知系统(Immediate Notify V1)。
- UAF / Verse 动画集成:将 UAF 系统暴露给 Verse,使
skeletal_animations能够作为 UAF 系统运行。 - UAF 扭曲与对齐增强:
AlignSequence节点重命名为AlignWarp,并添加了缓和的偏斜扭曲对齐。UAF 对齐节点 API 更新并增加了参考实现。 - Proxy Table 分组能力:新增行分组支持,无需插入虚拟行即可组织条目。
- RigVM 扩展点:为自定义结构体 pin 控件和可编辑性增加了 RigVM 扩展点。新增函数支持读取控制台变量。
- ClassInfo 追踪:为 ClassInfo 追踪添加了 DisplayName 支持。
- WebKit 剪贴板:在 Apple 平台的 Web 浏览器控件中实现了 cmd+x/cmd+c/cmd+v 快捷键支持。
- 姿态缓存格式:添加了支持多种姿态缓存格式的引擎底层机制。
- VectorRegister 功能补充:增加了
VectorRegisterCast模板与多个缺失的特化,并补齐了FTransform的Get/SetScale3DRegister接口。 - 重新定向模式:为 UAF ValueBundle 添加了每骨骼的重新定向模式支持。
- UAF 核心模块指南:提供了 UAF 核心模块的开发指南。
⚡ 性能优化
- 视口交互优化:修复了关卡视口悬停行为在鼠标未移动时仍查询命中代理的问题,消除了使用手柄飞行时因不必要计算导致的性能下降。
- UAF 资产注册数据版本化:每个 UAF 资产在导出的 AssetRegistry 数据上附加版本号,并提供了强制获取最低版本数据的 API,可加速离线校验和同步流程。
🐛 Bug 修复
- Sequencer:修复了当通用对象定位器的属性数据不再可访问时,
FFragmentItem::GetFragment发生的崩溃。 - MegaLights:修复了第一人称视角下的接触阴影问题。
- Metal RHI:修复了绘制半透明路径时未绑定深度模板缓冲区引发的断言崩溃。
- Control Rig 稳定性修复:
- 修复预览网格缺少部分骨骼时导致的崩溃。
- 修复创建形状 Actor 时的崩溃。
- 修复 SaveAs 引起的崩溃。
- 修复 Rig 变量变更后在 Sequencer 中加载序列的崩溃。
- 修复保存 Rig 时的崩溃。
- 修复 AutoRTFM 下 RigHierarchy 拓扑拷贝的崩溃。
- 修复模块层次结构不显示模块标签的问题。
- 修复直接重连节点编辑时点击位置不够精确导致无法生成节点的问题。
- 修复蓝图生成的运行时资产中变量类别不正确的问题。
- 修复静态分析警告。
- Control Rig / Sequencer 委托泄漏:修复了重新加载关卡序列时委托未释放的问题。
- Control Rig 加载与 Cook 死锁/非确定性:
- 死锁修复:通过版本门控动态导入加载 Control Rig 覆盖所有者结构体,替代原有的可导致 Cook 死锁的
StaticLoadObject方案。 - 非确定性修复:序列化 RigVM 函数编译数据时按确定性顺序排序映射表;使 RigVM 资产变体 GUID 在 Cook 中保持确定性生成。解决了 Control Rig 蓝图静态类 Cook 的非确定性。
- 强化模块化 Rig 加载:在重新编译前完成模块依赖的终结,并添加了重入保护以防止初始化过程中出现堆损坏崩溃。
- 死锁修复:通过版本门控动态导入加载 Control Rig 覆盖所有者结构体,替代原有的可导致 Cook 死锁的
- Control Rig / RigVM Graph 修复:
- 修复撤销将公共函数恢复为私有函数的问题。
- 修复模板节点未显示为通配符节点的问题。
- 修复
URigVMPin::ShouldHideSubPins未正确处理未解析模板引脚的问题。 - 修复在 Cook 时无法重新编译的引用函数,不再丢弃其持久编译数据。
- UAF 相关修复:
- 修复非 Unity 编译环境下的链接错误。
- 修复 Montage 中
AnimNodeLayerConfig被错误标记为 transient 的问题。 - 修复 PoseSearch 中
GetWorld函数对无效上下文的容错。 - 修复模板节点在 UAF 编辑器中不显示的问题。
- 修复 Layer Stack 在初始化前调用
Super::Initialize引起的空 BaseLayer 编译错误。 - 修复动态绑定问题:
bDynamicOffset相关缺陷。
- PCG:修复切换工具时活动编辑器模式工具静默提交正在进行的编辑,现改为取消。
- RewindDebugger:将 VLog 重播绘制委托注册到 VisLog 显示标志下,避免误显示。
- Blackmagic 媒体源:修复了与时间码提供器共享设备时无法打开的问题。
- Motion Design:修复了广播通道媒体输出无法通过 JSON 导入的问题,因 JSON 读取器要求对象属性实例化。
- 内存映射大块数据:修复了对齐问题。
- 数学单元测试:修复了某些平台上数学单元测试的错误。
- AI 助手:不再在 AI 选项卡自带的状态栏上显示“询问 AI”面板召唤入口。
🔧 API 变更
- 导出宏修正:引擎、插件及 Runtime 中多处模块的导出宏被修复,确保跨 DLL 边界的类型正确导出。
- RigVM 函数 GUID 重构:重构了 RigVM 函数的 GUID 系统,并以此为基础修复了 FunctionHash 与可调用数据的 Cook 非确定性。
- UAF 公开方法:Montage 组件中的
GetInertializationRequestForGroup重命名为FindInertializationRequestForGroup并移至公共 API。 - UAF Warping API 重命名:
AlignSequence节点重命名为AlignWarp。 - Proxy Table 导出:对外暴露了
UProxyTable::FindProxyObject的软结果重载。 - 数学库补充:增加了
FTransform的强制转换构造函数、VectorRegisterCast泛型支持,以及FTransform缺少的Get/SetScale3DRegister。 - 警告补齐:为
SpringMath.h补回了缺失的#pragma warning pop,避免警告溢出。 - 编辑器 API:扩展了内容浏览器中“创建 Control Rig 资产”的 API,支持同时选择多个蓝图 Rig 批量创建。