2026-06-16 引擎周报
✨ 新功能
- Dataflow 网格对称性工具:新增
FindMeshSymmetryPlane数据流节点及相关的平面近似对称检测器功能,用于在数据流中检测和利用网格的对称性。 - Android 双向远程控制台:为 Android 平台实现了双向远程控制台支持,共享 Win64 的实现方案。
- 场景工具集支持 Data Layer:为场景工具集 (Scene toolset) 增加了对 Data Layer 的支持。
- 新节点创建系统:引入了一套新的代码节点创建系统,用于管理其自身
NodeDesc的生命周期,并首先在ChooserPlayer中使用。 - DataLayer 运行时状态覆盖:为
DataLayerInstances新增一个属性,允许通过读取 CVar 在PostLoad阶段运行时覆盖其初始运行时状态。
🚀 重大变更
- Stomp 回退机制修复与改进:修复了多个 stomp 回退评估 (evaluation) 的错误,并清理了非错误的回退消息。同时实现了 stomp 回退的自动恢复功能,改善了整体稳定性和可预测性。
- Composure 面板行为变更:允许用户在 Composure 面板中选择在编辑器中隐藏的 Actor,提升了合成工作的灵活性。
- 修复 LevelInstance 世界委托触发问题:修复了在
UWorld::ReInitWorld期间FWorldDelegates::LevelRemovedFromWorld未对 LevelInstances 触发的问题,解决了ULandscapeSubsystem中状态不同步的问题。
⚡ 性能优化
- 着色器编译优化:在 SPIRV-Tools 的
RedundancyEliminationPass中预分配向量内存,将特定着色器 (如FTSRRejectShadingCS/121) 的编译时间减半。 - 正确处理虚拟骨骼索引:使用原始骨骼索引来正确处理虚拟骨骼,提升了动画计算的准确性。
- 音频设置预加载:在任务线程首次访问创建 UObject 之前,预加载音频平台设置,避免潜在的线程创建延迟。
- Lumen 网格卡片稳定排序:确保所有排序具有稳定的顺序,避免在烘焙过程中出现非确定性问题。
- Mass 导航更新节流:为
MassNavigation添加了节流机制,防止处于持续运动状态的 SceneGraph 实体淹没导航更新管线,提升了性能。 - 减少 GFP 信息图拷贝:避免在引擎初始化 (
EngineInit) 阶段对GfpInfoMap进行多余的拷贝,降低了相关开销。 - 修复动画序列缓存非确定性:修复了由于未初始化曲线填充导致
AnimationSequenceDDC 输出非确定性的问题,提高了缓存命中率。
🐛 Bug 修复
- 修复路径选择器事件:修复了通过上下文菜单创建新文件夹时
SPathPicker未触发OnPathSelected事件的问题。 - 修复移动端半透明图元渲染:修复了在启用静态光照的移动端上,具有表面光照的半透明图元缺少接触阴影 (CSM) 的问题。
- VulkanRHI 读回屏障修复:为 Vulkan 的缓冲区读回操作添加了缺失的内存屏障。
- 修复文本存储契约:修复了
FTextStoreACP::GetText未遵守ITextStoreACP和TS_RUNINFO契约的问题。 - 修复 Sequencer 动画蒙版分割崩溃:修复了在 Sequencer 中分割动画蒙版区域 (Mask Section) 导致编辑器崩溃的问题。
- 防护无效骨骼索引:在
FIKRetargetWeaponGoalOp::Run中防护了INDEX_NONE骨骼索引,防止崩溃。 - PCG 编辑器工具变换操纵杆:为 PCG 编辑器工具模式 (Editor Tool mode) 启用了变换操纵杆 (transform gizmo)。
- 防护 Sequencer 空结果:在
FSequencerEdMode::Enter中防护了AddInteraction返回的空结果,防止崩溃。 - 修复 Mac Metal SM5 预览:修复了在预览 Mac Metal SM5 时,最大着色器功能级别开关未激活 SM5 引脚的问题。
- 修复 Sequencer 固定项下方空白:修复了 Sequencer 中固定项下方存在死区 (dead space) 的问题。
- 修复平台预览切换崩溃:修复了在支持与不支持 Strands 几何体的平台预览之间切换时发生的崩溃。
- 修复测试自动化中心 UI:修复了获取问题摘要失败时,加载动画 (spinner) 仍持续显示的问题。
- 修复 Insights 树视图重建延迟:修复了切换会话时,树视图内容重建存在延迟的问题。
- 修复动画曲线切线计算:修复了在动画图中计算用户切线时的错误,该错误因拖动切线手柄时不再匹配离开和到达切线以保持权重而暴露。
- 修复输入线程与模态窗口交互:修复了使用输入线程时,编辑器中出现模态窗口导致的错误。
- 修复材质连接绘制策略:静态分析修复了
MaterialGraphConnectionDrawingPolicy.cpp中不必要的空检查,并移除了触发错误的代码。 - 修复着色器功能级别预览:可能与之前的 SM5 引脚问题相关,进一步修复了预览功能。
- 修复子图元代理材质切换崩溃:修复了在支持与不支持 Strands 几何体的平台之间切换预览时发生的崩溃。
🔧 API 变更
- 清理解析 API:对解析 (resolve) API 进行了清理。
- UAF 图层属性行生成变更:将
UAF Layering从使用SinglePropertyRows改为使用PropertyRowGenerator,保持了完整的属性句柄链和外部/选定对象,修复了上下文感知绑定变量/函数选择器的问题。 - UAF 搜索工具改进:针对搜索工具收到了关于搜索范围的反馈,进行了相应调整(如移动图标、减少同步加载、减少重复代码等)。
- 限制 UAF 数组元素类型:限制了
FBindableStruct/FBindableObject在数组中的元素类型。 - 资产工具路径支持:使资产工具的
read_file/write_file操作支持 Unreal 虚拟内容路径。 - UAT/Gauntlet 命令行参数覆盖:允许命令行参数的最后一个值覆盖之前的值。
- 修复 JSON Schema 生成器:修复了 JSON Schema 生成器将具有空字符串默认值的参数错误标记为必填的问题。
- UBT 警告暴露:通过
BuildConfiguration.xml和命令行暴露了每一个编译警告。 - UBT 警告格式修复:修复了格式错误的
-Wno-error=标记。 - UBT 警告配置修复:修复了几个配置错误的警告,并使排序保持稳定。
- DDC 回放行为可配置:使 DDC 的回放行为可配置,并将其合并到层级结构中。
- 移除 StateHandle 生存期 CVar:移除了控制
StateHandle生存期的 CVar。 - 暴露 UnrealTestNode 阶段:将
UnrealTestNode的 Phases 暴露为可读属性。 - LazyObjectPtr 废弃命令行工具:添加了一个命令行工具,用于解析项目资产注册表数据以生成 GUID 到软对象路径的映射,该映射可通过 ini 文件摄入以实现加载时转换。
- UAF 状态树条件显示顺序:使 UAF 状态树条件在动画类别中优先显示。
- 修复 MVVM 废弃功能:修复了当异步加载线程激活时,MVVM 废弃功能无法正常工作的问题。
- MVVM 工具集更新:对 MVVM 工具集进行了更新。
⚠️ 废弃预告
- 修正废弃版本号:将
UE_DEPRECATED宏中的版本号从6.0修正为5.9。 - LazyObjectPtr 废弃准备:添加了一个命令行工具,为
LazyObjectPtr的废弃和加载时转换做准备。