本文用Unity的Daydream Preview GVR13版本开发同时兼容Daydream和Cardboard的Android应用,Android Studio版本为2.2.3。

  1. 下载最新Daydream Preview(版本:Unity Daydream Preview 5.4.2f2-GVR13 (64-bit))并安装。
  2. 下载最新的Google VR SDK for Unity,新建一个Unity项目,并将GoogleVRForUnity.unitypackage导入到项目里面。
  3. 在File -> Build Settings里面,Switch Platform为Android。
  4. 在Player Settings...里面,Android面板下,Other Settings里面,勾选Virtual Reality Supported,删掉Split Stereo Display(non head-mounted),如果有的话,并添加Cardboard和Daydream,而且Daydream必须在Cardboard之上,否则就会出现"Incompatible app

    This Cardboard application is not compatible with Daydream headsets."的错误。Minimum API Level选API level 19(Cardboard最低支持API level 19,Daydream最低支持API level 24)。

  5. GVR的VRModeEnabled在GVR13中被强制变成true,无法直接修改为false,只能通过UnityEngine.VR.VRSettings.enabled来切换VR模式,而在非VR模式下,则屏幕静止不动。
    VRModeEnabled
    
    Determine whether the scene renders in stereo or mono. 
    
    Supported only for versions of Unity without the GVR integration. VRModeEnabled will be a no-op for versions of Unity with the GVR integration. True means to render in stereo, and false means to render in mono. 
  6. 监听Daydream左上角的返回键,可参考GoogleVR Demos里面的Teleport.cs脚本:
       void LateUpdate() {
    GvrViewer.Instance.UpdateState();
    if (GvrViewer.Instance.BackButtonPressed) {
    // TODO do what you wanna do here
    }
    }

    写一个脚本,挂在场景里的某个GameObject上,并在LateUpdate()里面做逻辑处理。

  7. 可以直接拿GoogleVR Demos里面的GVRDemo场景中的DemoInputManager,GvrViewerMain,GvrControllerMain以及Player,直接添加到自己的场景中,则可以实现Daydream手机上Daydream Controller可见,而在Cardboard模式下(非Daydream手机运行时),则显示成视选圈。
  8. 事件监听,需要在EventSystem上添加GvrPointerInputModule,并确保GvrViewerMain上面挂有GvrPointerManager。如果是和3D GameObject交互,则确保Main Camera上挂GvrPointerPhysicsRaycaster脚本;如果是和UGUI交互,则需要确保Canvas的Render Mode是World Space,并挂上GvrPointerGraphicRaycaster脚本,以及UI上的Raycast Target勾选上。最后在UI上挂上实现IGvrGazeResponder接口的脚本,实现事件监听并处理相应的逻辑。
  9. 从Android应用的原生Activity调用UnityPlayerActivity启动Unity场景之后,调用UnityPlayer.UnitySendMessage()方法往Unity发送数据时,发现Unity场景在Daydream提示将手机放入Daydream头盔的动画过后,并没有收到数据。原因是在播放Daydream动画的时候还未加载Unity的第一个场景,在这个时机发送数据接收对象还不存在。解决的办法就是,在Unity场景启动之后,再发送一条请求,请求UnityPlayerActivity再发一次数据给Unity。

本文为原创,如果转载请注明出处

基于Daydream technical preview GVR13开发Daydream,Cardboard的Android应用的更多相关文章

  1. 基于Jquery WeUI的微信开发H5页面控件的经验总结(2)

    在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...

  2. 基于CkEditor实现.net在线开发之路(7)列表页面开发动作介绍

    一个列表页面不止是查询,它也包含了很多业务上功能的实现,这些业务功能的实现的逻辑我称之为动作.如触发单击按钮删除数据,更改业务表数据,调用webService,调用WCF接口,弹出新窗体新增.修改.查 ...

  3. 基于ionic+angulajs的混合开发实现地铁APP

    基于ionic+angulajs的混合开发实现地铁APP 注:本博文为博主原创,转载时请注明出处. 项目源码地址:https://github.com/zhangxy1035/SubwayMap 一. ...

  4. 基于ThinkPHP3的微信平台开发_1

    微信公众平台是个好东西,具体的就不说了,我直接说技术>_< 下图为目录结构一览: 微信开发 - 文件目录结构 平台功能: 此次开发的平台是面向多微信公众号.微信多公众号主(下面简称号主)的 ...

  5. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

  6. 基于CkEditor实现.net在线开发之路(1)

    我以前的公司使用office sharepoint designer为界面设计器,嵌套各种自定义控件,进行各种管理软件,工作流的开发,遇到比较复杂的逻辑,则采用本地写类库,生成DLL上传到服务器,通过 ...

  7. 基于Eclipse的Hadoop应用开发环境配置

    基于Eclipse的Hadoop应用开发环境配置 我的开发环境: 操作系统ubuntu11.10 单机模式 Hadoop版本:hadoop-0.20.1 Eclipse版本:eclipse-java- ...

  8. 基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序

    特点: 1.基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序: -(IBAction) showTOC:(id)sender { if (_tocViewController ...

  9. 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML(转)

    1.什么是工程化开发 软件工程的工程化开发概念由来已久,但对于前端开发来说,我们没有像VS或者eclipse这样量身打造的IDE,因为在大多数人眼中,前端代码无需编译,因此只要一个浏览器来运行调试就行 ...

随机推荐

  1. XHTML与HTML的差别

    HTML与XHTML之间的差别,粗略可以分为两大类比较:一个是功能上的差别,另外是书写习惯的差别.关于功能上的差别,主要是XHTML可兼容各大浏览器.手机以及PDA,并且浏览器也能快速正确地编译网页. ...

  2. base库插件---form

    $().extend('serialize', function () { for (var i = 0; i < this.elements.length; i ++) { var form ...

  3. HDU 1317(Floyd判断连通性+spfa判断正环)

    XYZZY Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  4. python之路: 线程、进程和协程

    进程和线程 既然看到这一章,那么你肯定知道现在的系统都是支持“多任务”的操作,比如: Mac OS X,UNIX,Linux,Windows等. 多任务:简单地说就是同时运行多个任务.譬如:你可以一边 ...

  5. DML、DDL、DCL区别及介绍

    DML(data manipulation language):        它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作 ...

  6. Varnish Cache

    1 Varnish简介 Varnish是高性能且开源的反向代理服务器和HTTP加速器(cache server).其开发者Poul-Henning Kamp是FreeBSD核心的开发人员之一.Varn ...

  7. 常用HQL集锦

    1.根据ID查询某"一个"实体类 方法1: String hql = "From ClassEntity as c where c.id=?"; ClassEn ...

  8. CentOS 6.4 x64 postfix + dovecot + 虚拟用户认证

    第一, 首先必须安装 apacache  mysql  php CentOS 直接使用 yum 安装 yum -y install httpd httpd-devel mysql php-mysql  ...

  9. Codeforces#355

    大小号刷题,大号,被查重,悲剧,最后小号过了3题 A题: 分析:大于h的+2,小于等于h的+1 #include <iostream> #include <cstdio> #i ...

  10. Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件!

    源:Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件! 2014年02月06日发布控件的重要更新版本: Victor 串口控件 1.5.0.2 版本 (包 ...