Unity UI画布不能与VR合作

问题描述:

我一直在试图获得一个非常简单的使用VR的Unity UI画布演示。Unity UI画布不能与VR合作

我在这里读了Oculus公司的博客文章:https://developer3.oculus.com/blog/unitys-ui-system-in-vr/,但我需要使用原生UI的团结,我想重新分配无照worries.I遵循本教程https://unity3d.com/learn/tutorials/topics/virtual-reality/interaction-vr?playlist=22946和资产商店下载统一VR样本项目中的代码。在这里,他们提供了一些放置在摄像机上的脚本(VRInput和VREyeRaycaster)以及一些放置在目标对象(VRInteractiveItem和ExampleInteractiveItem)上的脚本。

当我将目标脚本应用于场景中的常规GameObject(例如多维数据集)时,raycast可以正常工作,并且在激活fire1时会进行相应的调用。当我尝试为一个画布对象(例如一个按钮)做这个 - 没有检测到命中。我已经尝试将两个目标脚本(VRInteractiveItem和ExampleInteractiveItem)放在画布上,包含按钮和按钮本身的图像都不起作用。我究竟做错了什么?为什么它会在常规的游戏对象上工作,而不是在UI画布上工作?我已经确保我所有的画布元素都具有他们的光线投射目标布尔属性勾号

编辑: 它似乎工作时,我附加一个箱子碰撞到UI元素,这是必需的?我认为它应该只与GraphicsRaycaster相连。但配置下不工作(当盒子撞机是禁用和图形raycaster启用)

enter image description here

这是什么,是我的球员相机:

enter image description here

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

+0

请务必使用正确的RayCaster “Unity的UI系统中有两种类型的内置射线施放器:GraphicRaycaster(用于Canvases)和PhysicsRaycaster(用于物理对象)。” 您用于多维数据集的raycast可能是一个PhysicsRaycaster –

在Unity中,raycasting仅适用于有对撞机的游戏对象。 Raycast在碰撞对撞机时返回true。没有碰撞者,射线无法击中。

Unity Physics.Raycast documentation

如果你想使用VR统一的UI,你可能想看看这个资产:VRTK

有使用控制器或摄像机瞄准VR UI的一些例子。

转到您的画布,您应该有一个选项是“平面距离”它被设置为100,我将其更改为0.5,它的工作得很好。