以前做HTC VIVE开发的时候,做UI交互不需要考虑那么多事情,直接一个VRTK插件包,自己想要的功能几乎全部包含在内,可是自从Oculus的Touch出来以后,Oculus的操作体验又上了一个大台阶,哎,作为一个苦逼的程序员,当然又得有新工作啦,使用Oculus进行VR程序开发,那么重点来了,怎么使用Oculus的插件包进行UI交互开发?搜索半天,发现了好久以前的一个VR UI开发引导,还是英文版的,哎,尝试半天啊,各种问题。废话不多说,主题走起.................

此处使用到的插件包为OculusSampleFramework.unitypackage,可以自行到Oculus官网下载

首先说说Unity的UI包括的重要组件:

EventSystem:这玩意就相当于大脑,处理各部件间的关系

InputModules:输入模式,决定常规模式,还是支持VR交互模式

RayCasters:射线投射器,Oculus没有自己的UI系统,所以只能通过常规模式功能扩展以实现UI交互,而最简单的就是通过射线检测的位置替代常规的鼠标位置,实现交互

GraphicComponents:各种响应组件(按钮,滑块等)

此处进入操作流程:

第一步:添加VR摄像头OVRCameraRig

作为VR程序,最重要的就是一个VR相机了,从OVR->Prefabs目录中找到OVRCameraRig预制体,拖到当前场景中,作为摄像机。

第二步:创建画布Canvas并修改EventSystem的输入模式InputModule

此处创建一个简单的按钮Button,并将Canvas的RenderMode设置为WorldSpace。选中EventSystem,删除其StandaloneInputModule组件并添加OVRInputModule组件。讲OveCameraRig对象下的子物体CenterEyeAnchor拖动到OVRInputModule组件RayTransform处,作为射线投射物体。

第三步:添加GazePointer

UI交互必须有一个指针来表明你所选的位置,搜索GazePointerRing预制体,拖动到场景中,并将OveCameraRig对象下的子物体CenterEyeAnchor拖动到OVRGazePointer组件RayTransform处。

第四步:Canvas画布设置

将OveCameraRig对象下的子物体CenterEyeAnchor拖动到Canvas下EventCamera处。替换画布Canvas上的GraphicRaycaster组件为OVRRaycaster组件,在新的OVRRaycaster对象上,把BlockingObjects下拉框的选择改为All。并将第三步的GazePointerRing拖动到OvrRaycaster的Pointer处。

OK,到此处,应该可以使用头显进行UI交互了,但是我想用手柄进行UI交互要怎么做了,简单,只需一步:

第五步:手柄交互功能

搜索OVRInspectorLoader预制体,拖动到场景中,OK,已经可以使用手柄愉快的玩耍啦。

VR中头显和手柄的UI交互已经完工了,但是我要想使用鼠标进行交互便于测试改咋整啊?简单

第六步:世界坐标鼠标指针

搜索CanvasPointer预制体,拖动到Canvas下作为画布的子物体,并将它拖动到画布OVRRaycaster组件的Pointer处,为画布添加OVRMousePointer组件,OK,此处就可以支持鼠标交互啦!

UI交互正常进行啦,那么VR中怎么实现物理对象的交互呢,也挺简单,将OVRPhysicsRaycaster组件添加到OVRCameraRig上,并将EventMask设置为Gazeble,在场景中新建一个Cube作为交互的对象,修改Cube的Layer为Gazable,添加EventTrigger组件用以响应交互事件。OK,物理交互也实现啦!

VR中Unity UI系统相关推荐

  1. 全面理解 Unity UI 系统

    原地址:http://www.cnblogs.com/whitecat/p/4159815.html 随着 Unity 4.6 发布,新 UI 系统终于与大家见面了.这篇文章将不会介绍如何使用按钮.滚 ...

  2. Unity基础笔记(3)—— Unity UI系统

    Unity UI系统 一.UI系统介绍 1. Unity2D 和 UI的区别 Unity2D:主要基于 SpriteRenderer 和 2D物理系统等组成. UI:由 Canvas 以及 各种 UI ...

  3. vr 软件linux,你在VR中使用Linux系统已不是梦想

    原标题:你在VR中使用Linux系统已不是梦想 2018年04月03日,对于VR,我们相当熟悉Oculus Rift.HTC Vive.PSVR和其他热门的品牌,但VR同样来到了Linux. Safe ...

  4. VR开发——Unity动画系统(V客it学院技术分享)

    在我们进行VR开发的过程中,免不了需要各种各样的模型动画.那么面对这样的简单动画,我们大可以使用Unity的动画系统来完成整个事情. 前段时间我在博客看见了一篇非常不错的动画系统讲解,今天我就借花献佛 ...

  5. Unity UI系统-UGUI简介

    UGUI的简介: UGUI系统是从Unity 4.6开始,被集成到Unity的编辑器中Unity官方给这个新的UI系统赋予的标签是:灵活,快速和可视化!,简单来说对于开发者而言就是有三个优点:效率高效 ...

  6. cocos入门7:cocos creator 中的ui系统

    1.UI系统 一个完整的游戏一般由不同的系统组成.从技术的角度看一般会不包含UI系统.动画系统.物理系统和声音系统等.其中开发声音相关的内容在引擎的帮助下变得很简单. 对于目前市面上的手机游戏来说,特 ...

  7. Unity UI系统--image组件

    UI中除了文本,最多的就是图片.按钮,那lmage组件主要负责图片的显示 lmage游戏物体必须放在Canvas游戏物体下才可以生效 主要属性 Sourcelmage(源图片):源图片,在脚本中叫sp ...

  8. VR开发——Unity动画系统2(V客it学院技术分享)

    版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 偶然从csdn上看见各位大佬为Unity事业做出这么大的贡献,故献出自己的一份力, ...

  9. 3D游戏与编程——UI系统

    目录 UI系统 Unity GUI简介 IMGUI UGUI 的产生与优势 作业要求 使用UGUI方法制作血条 制作预制 使用IMGUI方法制作血条 结果演示 代码传送门 UI系统 Unity GUI ...

最新文章

  1. VS C/C++控制台程序添加内存泄漏自动检测功能
  2. ABAP 生成ZIP压缩文件的代码
  3. JZOJ 1251. 收费站
  4. jQuery面向对象写法规定写法样式规定
  5. 三国大将风云java_三国正史四大猛将:临阵斩杀敌方大将,连吕布和马超也做不到...
  6. 索尼android 8,索尼宣布Android 8.0升级名单 Z系列被抛弃
  7. 使用Mat分析大堆信息
  8. 盒型详解及不同浏览器兼容
  9. html js 读取资源文件,javascript如何读取文件?
  10. 使用Setup Factory安装包制作工具制作安装包
  11. 用 Python 修改微信(支付宝)运动步数,轻松 TOP1
  12. java 方法缺省参数
  13. 电总协议串口调试助手
  14. 如何禁止搜索引擎收录WordPress站点某个分类的文章?
  15. PPT文件不能编辑的原因
  16. 联想拯救者y7000p加内存条_联想 拯救者Y7000P 如何插入SD卡?
  17. 一缕黑暗中的火光-----------UML九种图、开发过程中英文名称对照--------------优雅的建模语言...
  18. logging level级别
  19. java浏览器无界面后台截屏工具
  20. Android设备双屏显示

热门文章

  1. 时空角怎么理解_天道文化——如何让员工人人以客户为导向?
  2. 计算机怎么设置内存数据恢复,最新手机内存数据恢复方法【详细介绍】
  3. Xiaohe-LeetCode 100 Same Tree
  4. 制作CRM管理系统03(用户管理)
  5. Arch Linux的安装与常用配置
  6. pig基本语法——cross
  7. winsvr服务器C盘突然满了的处理方法
  8. 计算机硬件基础与汇编,计算机硬件基础-5-指令系统与汇编语言(对应教材第4章).ppt...
  9. 软件采购必备:软件供应商评估表 之七(共七),结束!
  10. VM安装Ubuntu后重启后报错“please remove the installation”?答案在这里