(三)GearVR开发应用入门教程:Unity中OculusVR的UI交互

Unity中Oculus VR的UI交互

谈到UnityUI交互,首先我们先来看下Unity的UI系统中几个关键的组成部分:
· EventSystem 
· InputModules 
· RayCasters 
· GraphicComponents: Button, Toggle, Slider 等.
EventSystem是处理所有UI事件的核心。它与其他几个部分紧密联系,例如InputModule,是它主要的事件处理来源。在Unity UI系统中,一个场景中只能有一个InputModule活跃。默认情况下,EventSystem绑定了一个鼠标输入模块(StandaloneInputModule)和一个触碰输入模块(TouchInputModule),他们分别用于处理PC端鼠标的输入以及移动设备触摸的输入监测。真正意义上的UI交互监测是在raycaster类中实现,例如GraphicRaycaster。 
raycaster负责处理可交互对象的一些设置。当一个InputModule提交了鼠标或触摸点的信息,它会轮询所有可用的raycaster,每个raycaster都会监测自己的组件是否有触发交互事件。有两种Unity内置的raycaster,GraphicRaycaster (用于Canvas)以及PhysicsRaycaster (用于非UI对象)。 
在用户点击场景时,raycaster会发出很多用于检测的射线,返回来的结果是一个对象的集合,但是用户肯定不希望一次点击同时响应不同的UI元素,这会混淆操作,而InputModule的职责就是去找到场景中最近的射线检测结果。 
然后再来看下,我们导入的Oculus Unity集合包中的东西,用Oculus提供的来替换掉我们工程里的部分组件。


 
  • 替换相机
  1. 删除场景中的Camera
  2. 添加OVR/Prefabs/OVRCameraRig预置体到场景中作为相机
  3. 将相机调整到合适的位置


 
  • 更改输入模块
  1. 选择Hierarchy中的EventSystem对象
  2. 移除用于处理常规鼠标输入的StandaloneInputModule组件
  3. 添加OVRInputModule脚本
  4. OVRCameraRig对象下的CentreEyeAnchor拖到OVRInputModuleRayTransform属性上,使射线始终从双眼中间位置发出
  5. OVRInputModule中的JoyPadClickButtonGazeClickKey分别用于设置Touch手柄和键盘上操作UI的按键


 
  • 添加凝视指针
  1. 添加Prefabs/OVRGazePointer预置体到场景中来指示当前凝视的位置
  2. 预置体上除了OVRGazePointer脚本还有一个与粒子特效有关的脚本,如不需要可以删除
  3. OVRCameraRig对象下的CentreEyeAnchor拖放到OVRGazePointer脚本的RayTransform属性上,使指针跟随射线


 
  • 设置Canvas
  1. 将需要凝视操作的CanvasRender Mode属性设置为World Space
  2. Canvas中的EventCamera设置为OVRCameraRig下的CenterEyeAnchor
  3. 移除Canvas绑定的用于监测鼠标与GUI元素交互的GraphicRaycaster组件
  4. 添加用于处理射线的OVRRaycaster脚本
  5. OVRRaycaster组件中,将Blocking Objects属性设为All,使凝视行为可以锁定场景中的其他可交互对象


 
  • 更改指针移动方式 

若希望通过其他输入设备移动指针,则进行此步,以右手Touch控制器为例。

  1. 选择EventSystem对象,把OVRInputModuleRayTransform属性改为OVRCameraRig对象下的RightHandAnchor,使射线从右手的Touch控制器发出
  2. 选择GazePointerRing对象,将OVRGazePointer脚本的RayTransform属性改为OVRCameraRig对象下的RightHandAnchor,使指针跟随射线
  • 添加世界坐标下的鼠标 

若需要为VR场景提供与凝视一起存在的鼠标操作UI的功能,则进行此步操作。

  1. Prefabs/TrackedRemote预置体添加到场景中
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GarFe-Liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值