Unity UI 画布无法与 VR 配合使用

问题描述 投票:0回答:5

我一直在尝试获得一个非常简单的原生 Unity UI 画布与 VR 配合使用的演示。

我已阅读此处的 oculus 博客文章:https://developer3.oculus.com/blog/unitys-ui-system-in-vr/ 但我需要使用本机 Unity UI,因为我想重新分发代码无需担心许可证。我按照本教程 https://unity3d.com/learn/tutorials/topics/virtual-reality/interaction-vr?playlist=22946 并从资产商店下载了 unity vr 示例项目。在此,他们提供了一些放置在相机上的脚本(VRInput 和 VREyeRaycaster)以及一些放置在目标对象上的脚本(VRInteractiveItem 和 ExampleInteractiveItem)。

当我将目标脚本应用于场景中的常规游戏对象(例如立方体)时,光线投射工作正常,并且在激活 fire1 时进行适当的调用。当我尝试对画布对象(例如按钮)执行此操作时 - 未检测到命中。我尝试将两个目标脚本(VRInteractiveItem 和 ExampleInteractiveItem)放置在画布上,包含按钮的图像和按钮本身,但没有任何效果。我究竟做错了什么?为什么它可以在常规游戏对象上运行,而不能在 UI 画布上运行?我已确保所有画布元素的光线投射目标布尔属性都已勾选

编辑: 当我将盒子碰撞器附加到 UI 元素时,它似乎可以工作,这是必需的吗?我认为它应该只与附加的 GraphicsRaycaster 一起使用。但下面的配置不起作用(当禁用盒子碰撞器并启用图形光线投射器时)

这是我的玩家相机上的内容:

如果必须的话,我使用盒子碰撞器没有问题,但我想利用突出显示和按下的颜色属性中的 UI 按钮更改

unity-game-engine virtual-reality
5个回答
3
投票

在 Unity 中,光线投射仅适用于具有碰撞器的游戏对象。 Raycast 在碰撞到碰撞体时返回 true。如果没有碰撞器,光线就无法击中任何物体。

UnityPhysics.Raycast 文档


3
投票

我相信,对于第一次看到这个的人来说,它不起作用的一个潜在原因是上图中的画布使用的是“Graphics Raycaster”元素,而不是“OVR Raycaster”元素。 OVR Raycaster 旨在取代图形光线投射器,以将 Oculus 连接到 Unity UI。


0
投票

如果你想在 VR 中使用 Unity 的 UI,你可能需要看看这个资源:VRTK

有一些使用控制器或相机定位的 VR UI 示例。


0
投票

转到你的画布,你应该有一个“平面距离”选项,它设置为 100 ,我将其更改为 0.5 并且效果很好。


0
投票

您可以使用 Unity Assets Store 中的 Meta XR 集成包。

https://assetstore.unity.com/packages/tools/integration/oculus-integration-deprecated-82022

它是一款强大的VR、MR工具包。

Surface UI

Surface UI Inspector1

Surface UI Inspector2

在 VR 设备中播放时可以看到 UI。

© www.soinside.com 2019 - 2024. All rights reserved.