2026-06-15 引擎周报
✨ 新功能
- 语义搜索插件:为 Semantic Search 插件启用了 AudioAssetProcessor。
- 场景工具集:为场景工具集添加了 Data Layer 支持。
- Chaos 布料:为 Chaos Cloth Component 添加了光线追踪支持。
- 动画系统:在动画类别中优先显示 UAF State Tree Conditions。
- 动画图:实现了新的节点创建系统,该系统能管理 NodeDesc 的生命周期,并首先应用于 ChooserPlayer。
- Android 远程控制台:为 Android 添加了双向远程控制台支持,复用了 Win64 的实现。
- 应用商店测试:允许在非 Shipping 配置的本地开发版本中测试 RequestStoreReview。
- Dataflow 节点:新增了查找网格对称平面的 Dataflow 节点。
- 材质编辑器:在材质图编辑器偏好设置中支持通过引脚颜色的 Alpha 通道指定连接线粗细,以提升对比度。
- UnrealConsole:为 UnrealConsole 添加了 -mcp 模式并集成了引擎工具集。
- Ribbon 小部件:为 Ribbon 形状小部件添加了 trace 纹理。
- World Partition:为 DataLayerInstances 添加了新属性,支持通过读取 cvar 在运行时覆盖初始运行时状态。
- DDC (Derived Data Cache):使 DDC 的回放行为可配置,并将其合并到层级结构中。
- LazyObjectPtr 废弃:新增了一个 Commandlet,用于解析项目数据并生成 GUID -> 软对象路径的映射,以支持通过 ini 文件进行加载时转换。
- MeshTerrain:为布尔修饰器指定动态网格作为工具网格的来源。
- 内存分配器:添加了 mimalloc v3.3.2。
- PCG:新增了查找二维凹包(concave hull)的算法。
- 数字人类:支持从 DNA 生成平滑的骨骼网格体。
- 材质翻译器:材质函数“Apply”现在能自动刷新依赖材质和材质函数编辑器中的 Insights(如连接线和引脚颜色)。
🚀 重大变更
- StaticMesh 构建:实施了纯构建流水线以及基于内容寻址的源 MeshDescription DDC 记录。
- 材质连接绘制:对 MaterialGraphConnectionDrawingPolicy 进行了静态分析修复,移除了不必要的空值检查。
- UAT / Gauntlet:修改了行为,允许命令行参数的最后一个值覆盖先前的值。
- 材质翻译器:材质函数“Apply”现在能自动刷新 Insights。
- 线程本地存储:撤销了之前对 FPlatformTLS 中线程数量上限的增加,因为相关系统已限制了其创建的线程数。
- Substrate Toon:统一了 Toon 阴影和透射率在 CSM 和 VSM 下的外观。
- 状态树:移除了 StateHandle 生命周期管理的 CVar。
- UAF 搜索:根据反馈优化了搜索工具的作用域。
- PIE 启动:使用 IPIEAuthorizer 防止 PIE 启动,而不是在启动后立即请求停止。
- UBT 编译警告:通过 BuildConfiguration.xml 和命令行暴露了每一个编译警告。
- World Partition DataLayer:为 DataLayerInstances 添加了新属性,支持通过读取 cvar 在运行时覆盖初始运行时状态。
- 命令行参数:修改了 UAT / Gauntlet 的行为,允许命令行参数的最后一个值覆盖先前的值。
- 材质图编辑器偏好:新增了通过引脚颜色的 Alpha 通道指定连接线粗细的功能。
- 资产工具:使 asset tools 的 read_file/write_file 操作支持 Unreal 虚拟内容路径。
- Nanite:在回退 PSO 平台上,避免对 Compute PSO 进行 verify-use,修复了 Verify_NoUse InUseCount 泄漏。
- GFP:不再复制 GfpInfoMap,降低了引擎初始化成本。
⚡ 性能优化
- StaticMesh:通过纯构建流水线和内容寻址的 DDC 记录优化了构建过程。
- 音频:在任务线程首次访问之前预加载音频平台设置。
- Shader 编译:在 SPIRV-Tools 的冗余消除过程中预分配了向量大小,大幅减少了特定着色器(如 FTSRRejectShadingCS/121)的编译时间。
- Mass 导航:通过为持续移动的实体添加节流机制,防止场景图实体淹没导航更新流水线。
- 导航日志:缓存了导航元素的源名称,以便在所有者销毁后仍可用于日志记录。
- 内容浏览器:将内容浏览器源树包装在单个失效区中,以限制在没有变化时的部件遍历深度。
- 可编辑文本:实现了缓存机制,减少了长可编辑文本上调用 GetText 的次数和内存分配。
- GFP:通过避免额外复制 GfpInfoMap,降低了引擎初始化成本。
🐛 Bug 修复
- 骨骼动画:修正了使用原始骨骼索引以正确处理虚拟骨骼。
- 绘制模式:修复了离开绘制模式后无法重新进入的问题。
- 输入:暂时禁用了高精度鼠标模式下的原始输入键盘,以解决编辑器相关问题。
- 移动接口:MovementBaseInterface 的 IsValid 检查现在也使用 GetPhysicsObjectById 来验证 PhysicsActor 的有效性,覆盖了更多用例。
- PCG 视口:修复了数据视口中首次渲染过曝(固定曝光)的问题。
- GFP:修复了在 CancelDelegateList 中,当 PendingDelegatesByHandle 为空时提前退出,但 CallList 中仍存在需要取消的委托的问题。
- Lumen Mesh Card:确保所有排序都具有稳定的顺序,以避免潜在的非确定性烹饪问题。
- 材质连接绘制:修复了 MaterialGraphConnectionDrawingPolicy 中的静态分析问题。
- PCG:修复了重建引脚时错误地使用了错误 PinId 的问题。
- PCG:修复了 PIE 中销毁 PCG 组件时未被正确清理的问题。
- 原始输入:在为 Windows 原始输入键盘调用 OnKeyChar 时剥离了死键位,以避免 IntCastChecked 截断错误。
- Niagara:修复了着色器警告。
- Insights:修复了切换会话时,树视图内容重建延迟的问题。
- Sequencer:修复了固定项目下方存在死空间的问题。
- Chaos 布料:修复了 DrawLocalSpace/DrawVelocityScale 默认值被交换以及 DrawPointNormals 委托的问题。
- Chaos 布料资产:修复了当 PostLoad 生成新的渲染数据时未重新计算边界的问题。
- 测试自动化中心:修复了获取问题摘要失败时仍显示加载旋转器的问题。
- 动画序列:修复了由于曲线填充未初始化导致的动画序列 DDC 输出非确定性问题。
- Sequencer:修复了带有 Anim Mixer “DefaultTarget” 的关卡序列在编辑器重启后重新打开时崩溃的问题。
- 属性初始化:修复了属性初始化跟踪中访问集使用了错误数据的问题。
- 测试自动化中心:修复了一些琐碎问题。
- VisionOS:修复了编译错误,添加了 MarketplaceKit 依赖。
- Groom:修复了使用 rigging groom 时,当底层骨骼在插值引导时还未就绪导致的崩溃。
- PCG:修复了 PCGMetadataAttributeBase 的 FlattenAndCompress 中存在未初始化值的问题。
- 输入:修复了使用输入线程时编辑器中出现模态窗口导致的问题。
- 平台切换:修复了在支持和不支持 Strands 几何体的平台之间切换预览时崩溃的问题。
- 异步加载:修复了当异步加载线程被激活时,弃用标记未能正常工作的问题。
- 流式加载:修复了 UMaterialInterface::CacheTexturesSamplingInfo 在异步加载线程上触发 check() 的问题。
- MVVM:修复了当异步加载线程被激活时,弃用标记未能正常工作的问题。
- 控制权:修复了当控制器已经是目标 Pawn 的控制器时,错误地取消占有的问题。
- 构建配置:修复了一些 build.cs 文件中错误使用 Target.Type == Editor 而非 bCompileAgainstEditor 的问题。
- GFP 取消委托:修复了当 PendingDelegatesByHandle 为空时提前退出 CancelDelegateList,但 CallList 中仍存在需要取消的委托的问题。
- Lumen 排序:确保 Lumen Mesh Card 的所有排序都具有稳定的顺序,以避免潜在的非确定性烹饪问题。
🔧 API 变更
- 废弃标记:将 UE_DEPRECATED 的废弃版本从 6.0 修正为 5.9。
- 网络驱动:在 UNetDriver 中添加了通用的 OnConnectionRemoteAddrUpdated 委托,用于跟踪有效连接的 IP 地址。
- UBT 编译警告:通过 BuildConfiguration.xml 和命令行暴露了每一个编译警告。
- 状态树:移除了 StateHandle 生命周期管理的 CVar。
- UBT 警告:拆分了 CppCompileWarnings,并使排序稳定。
- 内部类移动:将 NonBufferingReadOnlyArchive 移动到了内部(Internal)。
- 代码生成:将可链接(Linkable)信息从 UhtModule 移动到了代码生成的内部结构中。
- 测试节点:将 UnrealTestNode 的 Phases 暴露为可读属性。
- UAF 绑定:限制了 FBindableStruct/FBindableObject 在数组中的元素类型。
- 资产工具:使 asset tools 的 read_file/write_file 操作支持 Unreal 虚拟内容路径。
- Nanite 平台:在回退 PSO 平台上,对 Compute PSO 的验证使用进行了特定修复。
- GFP 初始化:通过避免额外复制 GfpInfoMap,优化了引擎初始化成本。
- 命令行行为:修改了 UAT / Gauntlet 的行为,允许命令行参数的最后一个值覆盖先前的值。
⚠️ 废弃预告
- LazyObjectPtr:提供了一个命令行工具,用于生成 GUID 到软对象路径的映射,以支持将 LazyObjectPtr 通过 ini 文件在加载时进行转换,这预示着该类型的废弃和迁移路径。