求助,如何在 cardboard 二维码中切换VR和非VR模式

&本文用Unity的Daydream Preview GVR13版本开发同时兼容Daydream和Cardboard的Android应用,Android Studio版本为2.2.3。
下载最新(版本:Unity Daydream Preview 5.4.2f2-GVR13 (64-bit))并安装。
下载最新的,新建一个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脚本:
<span style="color: #
void LateUpdate() {
<span style="color: #
GvrViewer.Instance.UpdateState();
<span style="color: #
if (GvrViewer.Instance.BackButtonPressed) {
<span style="color: #
// TODO do what you wanna do here
<span style="color: #
<span style="color: #
写一个脚本,挂在场景里的某个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。
本文为原创,如果转载请注明出处
阅读(...) 评论()求助,如何在 cardboard中切换VR和非VR模式_百度知道
求助,如何在 cardboard中切换VR和非VR模式
我有更好的答案
鱼VR帮您找到资料.enabled=布尔值的用法跟以前的一键开关完全不同。问题就出在这里了.supportedDevices[1]+你刚才在列表放了多少个VR设备这里就写多少个),下面的列表是重点!要把None跟你要用上的VR设备都选上,注意要把None选上,1,下面就是真·开关VR代码了:&VRSettings.supportedDevices[0]+&;projectsettings&#47,接着是Cardboard,就用stringnone=VRSettings.supportedDevices[0]和stringcardboard=VRSettings:D+VRSettings.6以后.Log(&quot。下面我来说说自带GVR的Unity开关VR的正确姿势。Collider7第一步要先选择菜单edit&#47,否则不能开关VR模式。列表的顺序也很!重!要!如果你的应用打算一进入是2D界面的,就把None放在最前面,反之把它放后面,你的应用刚进入就是VR模式。Collider7这步做好以后,开始码代码。我们先写一句:&quot:原来,自从Unity的版本号到了5.supportedDevices[1]来记录。这步做好以后。楼主提到的VRSplayer,在Inspector面板把VRSupported勾上;写完以后拿Unity编辑器试运行一下,看输出的Log,把上面的内容记下来。这样做是为了获取列表里面每个VR设备的真实名字,当然你也可以不用手工记,用一个string来保存设备名字更高端。比如你的列表最上面是N0,已经整合了GVRSDK(个人认为整合得不好)。从谷歌码农加的注释可以看到,未整合GVR那时极方便的使用VRModeEnabled=布尔值来一键开关VR的方法,在整合GVR的Unity版本上面已经不能用了
要使用Cardboard,用户还需要在Google Play官网上搜索Cardboard应用,下载安装这个大小为70多M的应用。前Cardboard应用兼容的设备包括谷歌Nexus3、4和5三代机型、三星Galaxy S4和S5以及摩托罗拉Moto X。部分兼容机型包括HTC One、摩托罗拉Moto G及三星Galaxy S 3,但无法使用磁石来进行输入。这些设备必须安装Android 4.1以上系统,支持NFC功能。Cardboard眼镜是通过NFC技术与智能手机相连的。眼镜左手边的磁石是一个确认键,往下滑动可以选择进入不同的内容;而要退出当前内容也非常简单,把Cardboard眼镜竖着拿就会自动回到开始界面。
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。涓?浗鐨刅R澶存埓璁惧?绫诲瀷瓒

我要回帖

更多关于 google cardboard sdk 的文章

 

随机推荐