UE5 VR模式下widget上的UI无法更新和光束Interaction没有正常显示问题
两个关于VR模式下的问题:
问题一:widget上的UI无法更新
描述:VR模式下,游戏暂停时(set game paused),UMG上继承父类user widget类的按钮无法改变背景颜色2D下可以,VR不可用。
原因:
Set Game Paused(true)会冻结3D Widget的Slate渲染更新
- 2D是屏幕空间UI,不受游戏暂停影响
- VR/3D Widget是世界空间UI,属于Actor/Scene组件,暂停时样式、颜色、Brush 刷新被冻结
解决:
给3D Widget Component开「暂停时也更新」
找到场景里放菜单的Widget Component,右侧 Details 搜索:
- Tick When Paused = true
- Receive Hardware Input = true
问题二:光束Interaction没有正常显示问题
描述:VR模式下,在飞行游戏中,光束Interaction没有正常显示
原因:在飞行时,高速运动物体和射线延迟问题,机高速移动,世界坐标变化极快,WidgetInteraction默认是延迟一帧更新射线
解决:
将WidgetInteraction的Tick group设置为PostPhysics,不要用PrePhysics。
Tick Group(心跳组)决定了组件在每一帧的哪个具体时间点执行代码。
对于 WidgetInteractionComponent(Widget交互组件)来说,它决定了“射线检测(Raycast)”与“物体移动”谁先谁后的问题。
| Tick Group | 执行时机 | 物理数据状态 | 对 WidgetInteraction 的影响 | 适用场景 |
|---|---|---|---|---|
| PrePhysics | 物理模拟之前 | 旧数据 (上一帧的位置) | 最准确。在物体移动前就判定交互,避免“穿模”。 | VR交互首选、快速移动物体的抓取。 |
| DuringPhysics | 物理模拟期间 | 不确定 (可能旧可能新) | 不推荐。判定时间不稳定,可能导致交互闪烁。 | 仅用于更新不依赖物理的UI(如小地图)。 |
| PostPhysics | 物理模拟之后 | 最新数据 (这一帧的最终位置) | 可能有延迟。物体已经移动完了才检测,快速移动时射线可能会“打空”。 | 需要基于物体最终静止位置的逻辑(如激光瞄准)。 |
| PostUpdateWork | 所有更新之后 | 最终状态 | 延迟最大。通常用于渲染前的最后准备。 | 粒子特效同步、摄像机依赖的逻辑。 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 易锦风的博客!
评论


