VR App开发 小记

最近一个APP需要接入Cardboard,Daydream和Oculus三种SDK,这里简单介绍接入流程以及SDK运行先后顺序。

Daydream && Cardboard && Oculus

Daydream 和 Cardboard都是Google VR开发的SDK ,谷歌VR的APP都是用Daydream进行开发的。

编译的顺序以及性能问题

  • 如果在VR SDK 列表中Cardboard在Daydream前面,即使是Daydream硬件设备也不会运行Daydream模式

  • 如果在VR SDK 列表中只有Daydream,VR Android Manifest上也加上了条目,App会出现在VR 谷歌市场中,所以所有支持Daydream的设备也会支持异步多重投影技术

  • 如果在VR SDK 列表中只有Cardboard,App不会出现在VR 谷歌市场中,即使在支持的设备上也不会有异步多重投影技术和持续的高性能表现

  • 如果在VR SDK 列表中都勾选Daydream和Cardboard,在支持的设备上会有异步多重投影技术,如果勾选持续高性能表现也会在支持的设备上出现,同时App会出现在VR 谷歌市场

  • 如果要三个Daydream && Cardboard && Oculus都支持,将Oculus放在最上面。支持Gear VR的设备会先编译Gear VR,不支持的就会去回退选择Daydream和Cardboard。

  • 发布到Gear VR首先确保你能发布一个Unity app 在你的Galaxy Note 5, S6 Edge+, S6, or S6 Edge,然后把Oculus加入编译List,最后在你的项目Assets文件夹下创建文件夹Plugins/Android/assets(大小写相关),并且要包含Oculus的签名文件。

Oculus

  • Unity 5.1 或者以上的版本自带Oculus支持,在Other Settings > Configuration > Player Settings, 中可以看到.

  • Oculus下的签名文件Oculussigxxxxxxxx必须正确放置Plugins/Android/assets,不然会出现Thread Priority Security Exception,Make sure the APK is signed.
    同时一个设备生成的签名只能用于这个设备,这也就导致出了另外一个问题,如果想发布线上,只有更改架构。oculus设备把自己的设备id发给服务端,服务端根据设备id生成oculus.sig签名文件,用签名文件和场景打包,当前设备的apk场景。

开发遇到的问题

  • U3D切换场景

    不要忘记还需要在File->Building Setting中设置添加场景,否则也不能实现切换成功,Application.LoadLevel(“HuHuVRVideo”),已经过时。

    1
    SceneManager.LoadScene("HuHuVRVideo");
  • 正确删除某个组件下所有子item

    不是用for循环去遍历

    1
    2
    3
    while(m_GridLayout.transform.childCount > 0){
    DestroyImmediate(m_GridLayout.transform.GetChild(0).gameObject);
    }
  • 当凝视交互和UI层,交互的圈,可能被遮住看不到,调整Canva是的属性,Sorting Layer 改为GUI层,所有的交互都可以看到了。

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器