我一直在努力获得一个使用VR的原生Unity UI画布的简单演示。
我在这里阅读了oculus博客文章:https://developer3.oculus.com/blog/unitys-ui-system-in-vr/但是我需要使用本机统一UI,因为我想在没有许可证担忧的情况下重新分发代码。我遵循了本教程https://unity3d.com/learn/tutorials/topics/virtual-reality/interaction-vr?playlist=22946并下载了统一vr来自资产商店的示例项目。在这里,他们提供了一些放在相机上的脚本(VRInput和VREyeRaycaster)以及一些放在目标对象上的脚本(VRInteractiveItem和ExampleInteractiveItem)。
当我将目标脚本应用于场景中的常规GameObject(例如立方体)时,光线投射工作正常,并且在激活fire1时进行适当的调用。当我尝试为画布对象(例如按钮)执行此操作时 - 未检测到命中。我已经尝试将两个目标脚本(VRInteractiveItem和ExampleInteractiveItem)放在画布上,包含按钮的图像和按钮本身都没有用。我究竟做错了什么?为什么它适用于常规游戏对象而不是UI画布?我确保我的所有画布元素都勾选了他们的光线投射目标布尔属性
编辑: 当我将一个盒子对撞机连接到UI元素时,这似乎有效,这是否需要?我认为应该只使用附加的GraphicsRaycaster。但是下面的配置不起作用(当禁用盒式对撞机并启用图形raycaster时)
这就是我的玩家相机上的内容:
如果我不得不使用盒式对撞机我没有问题,但我想利用突出显示和按下的颜色属性中的UI按钮更改
答案 0 :(得分:2)
在Unity中,光线投射仅适用于具有碰撞器的游戏对象。当Raycast碰到对撞机时返回true。没有碰撞器,射线就无法击中。
答案 1 :(得分:1)
我相信,对于刚刚第一次看到这个的人来说,它不起作用的一个潜在原因是因为上图中的画布使用了" Graphics Raycaster"元素而不是" OVR Raycaster"元件。 OVR Raycaster旨在取代图形raycaster以将Oculus连接到Unity UI。
答案 2 :(得分:0)
如果您想在VR中使用统一的用户界面,您可能需要查看此资产:VRTK
有一些使用控制器或相机定位的VR UI示例。
答案 3 :(得分:0)
转到你的画布,你应该有一个选项是" Plane Distance"它被设置为100,我将其更改为0.5并且效果很好。