基于Daydream technical preview GVR13开发Daydream,Cardboard的Android应用
本文用Unity的Daydream Preview GVR13版本开发同时兼容Daydream和Cardboard的Android应用,Android Studio版本为2.2.3。
- 下载最新Daydream Preview(版本:Unity Daydream Preview 5.4.2f2-GVR13 (64-bit))并安装。
 - 下载最新的Google VR SDK for Unity,新建一个Unity项目,并将GoogleVRForUnity.unitypackage导入到项目里面。
 - 在File -> Build Settings里面,Switch Platform为Android。
 - 在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)。

 - 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.
 - 监听Daydream左上角的返回键,可参考GoogleVR Demos里面的Teleport.cs脚本:
void LateUpdate() {
GvrViewer.Instance.UpdateState();
if (GvrViewer.Instance.BackButtonPressed) {
// TODO do what you wanna do here
}
}写一个脚本,挂在场景里的某个GameObject上,并在LateUpdate()里面做逻辑处理。
 - 可以直接拿GoogleVR Demos里面的GVRDemo场景中的DemoInputManager,GvrViewerMain,GvrControllerMain以及Player,直接添加到自己的场景中,则可以实现Daydream手机上Daydream Controller可见,而在Cardboard模式下(非Daydream手机运行时),则显示成视选圈。
 - 事件监听,需要在EventSystem上添加GvrPointerInputModule,并确保GvrViewerMain上面挂有GvrPointerManager。如果是和3D GameObject交互,则确保Main Camera上挂GvrPointerPhysicsRaycaster脚本;如果是和UGUI交互,则需要确保Canvas的Render Mode是World Space,并挂上GvrPointerGraphicRaycaster脚本,以及UI上的Raycast Target勾选上。最后在UI上挂上实现IGvrGazeResponder接口的脚本,实现事件监听并处理相应的逻辑。
 - 从Android应用的原生Activity调用UnityPlayerActivity启动Unity场景之后,调用UnityPlayer.UnitySendMessage()方法往Unity发送数据时,发现Unity场景在Daydream提示将手机放入Daydream头盔的动画过后,并没有收到数据。原因是在播放Daydream动画的时候还未加载Unity的第一个场景,在这个时机发送数据接收对象还不存在。解决的办法就是,在Unity场景启动之后,再发送一条请求,请求UnityPlayerActivity再发一次数据给Unity。
 
本文为原创,如果转载请注明出处
基于Daydream technical preview GVR13开发Daydream,Cardboard的Android应用的更多相关文章
- 基于Jquery WeUI的微信开发H5页面控件的经验总结(2)
		
在微信开发H5页面的时候,往往借助于WeUI或者Jquery WeUI等基础上进行界面效果的开发,由于本人喜欢在Asp.net的Web界面上使用JQuery,因此比较倾向于使用 jQuery WeUI ...
 - 基于CkEditor实现.net在线开发之路(7)列表页面开发动作介绍
		
一个列表页面不止是查询,它也包含了很多业务上功能的实现,这些业务功能的实现的逻辑我称之为动作.如触发单击按钮删除数据,更改业务表数据,调用webService,调用WCF接口,弹出新窗体新增.修改.查 ...
 - 基于ionic+angulajs的混合开发实现地铁APP
		
基于ionic+angulajs的混合开发实现地铁APP 注:本博文为博主原创,转载时请注明出处. 项目源码地址:https://github.com/zhangxy1035/SubwayMap 一. ...
 - 基于ThinkPHP3的微信平台开发_1
		
微信公众平台是个好东西,具体的就不说了,我直接说技术>_< 下图为目录结构一览: 微信开发 - 文件目录结构 平台功能: 此次开发的平台是面向多微信公众号.微信多公众号主(下面简称号主)的 ...
 - Python黑帽编程1.2  基于VS Code构建Python开发环境
		
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
 - 基于CkEditor实现.net在线开发之路(1)
		
我以前的公司使用office sharepoint designer为界面设计器,嵌套各种自定义控件,进行各种管理软件,工作流的开发,遇到比较复杂的逻辑,则采用本地写类库,生成DLL上传到服务器,通过 ...
 - 基于Eclipse的Hadoop应用开发环境配置
		
基于Eclipse的Hadoop应用开发环境配置 我的开发环境: 操作系统ubuntu11.10 单机模式 Hadoop版本:hadoop-0.20.1 Eclipse版本:eclipse-java- ...
 - 基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序
		
特点: 1.基于ArcGIS Viewer for Flex开发的一款跨平台的应用程序: -(IBAction) showTOC:(id)sender { if (_tocViewController ...
 - 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML(转)
		
1.什么是工程化开发 软件工程的工程化开发概念由来已久,但对于前端开发来说,我们没有像VS或者eclipse这样量身打造的IDE,因为在大多数人眼中,前端代码无需编译,因此只要一个浏览器来运行调试就行 ...
 
随机推荐
- 使用windows上 mxnet 预编译版本
			
操作系统: 64位Windows10 mxnet的Windows预编译版本:下载地址 分为不支持GPUs和支持GPUs版并,一般选择GPUs版本. 将下载的压缩包解压,比如解压到D:\mxnet.然后 ...
 - JQuery实现仿腾讯的固定导航栏
			
1.描述 窗口滚动一定高度之后才让导航栏固定 2.要点 浏览器滚动的事件:$(window).scroll(functiuon(){ 文档滚过的高度: $(doucment).scrollTop(); ...
 - k-means算法的Python实现
			
#coding=utf-8 import codecs import numpy from numpy import * import pylab def loadDataSet(fileName): ...
 - hql语句拼接的替换方式
			
hql语句拼接的替换方式 hql语句拼接 String hql = "FROM Topic t WHERE t.forum=? "; List<Object> para ...
 - [python]小练习__创建你自己的命令行 地址簿 程序
			
创建你自己的命令行 地址簿 程序. 在这个程序中,你可以添加.修改.删除和搜索你的联系人(朋友.家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码). 这些详细信息应该被保存下来以便以后提 ...
 - mongodb 分片群集(sharding cluster)
			
实际环境架构 分别在3台机器运行一个mongod实例(称为mongod shard11,mongod shard12,mongod shard13)组织replica set1,作为cluster的s ...
 - Asp.net Ajax提供PageMethods调用
			
页面上的Javascript通过ASP.NET AJAX除了可以调用Web服务类,还可以调用网页中的静态方法. <%@ Page Language="C#" %> &l ...
 - STM32 对内部FLASH读写接口函数(转)
			
源:STM32 对内部FLASH读写接口函数 因为要用内部FLASH代替外部EEPROM,把参数放在STM32的0x08000000+320K处,其中20K是bootloader,300K是应用程序. ...
 - INC函数
			
1.inc(integer) inc(a)等于a:=a+1; 例: i := 100; inc(i); 结果:i等于101 2.inc(integer,integer) inc(a,b)等于a:=a+ ...
 - CentOS编译安装LNMP环境
			
这里是教大家如何在centos下利用源码编译安装LNMP环境. 工具/原料 centos服务器一台 自用电脑一台 准备篇 配置好IP.DNS .网关,确保使用远程连接工具能够连接服务器 配置防火墙,开 ...