为Oculus Go增强现有的Unity Android纸板游戏

时间:2019-03-21 20:46:57

标签: unity3d google-cardboard oculusgo

背景:

几个月前,我使用Unity(2018.2)和C#编写了适用于Android Cardboard的VR国际象棋游戏。 (https://pawnslaught.com)。我现在想使用Unity 2018.3(到今天为止是2018.3.8)对Oculus Go进行增强。

当前,它使用按常规层次结构排列的GvrReticlePointer处理选择:

Empty GameObject named CameraContainer that positions the camera in the scene
    standard Unity camera named MainCamera with attached GvrPointerPhysicsRaycaster
        GvrReticlePointer prefab.

在这一点上,我主要想增加对Go的Oculus指针的支持(以便用户可以将虚拟激光指向棋盘上的所需正方形,而不必用标线板查看)和72hz帧速率。

我真的很不想将游戏分为两个不同的Unity项目(一个用于Cardboard,一个用于Oculus Mobile)。理想情况下,我更希望Unity构建一个.apk,该.apk可以在从具有Cardboard查看器的随机Android手机到具有GearVR或Oculus Go / Quest的三星手机上运行的所有东西上运行:

  • 在非Oculus平台上启动时,以“纸板”模式运行,而忽略并隐藏与Oculus相关的所有内容。

  • 在Oculus Mobile平台(包括Go和GearVR)上启动时,默认情况下以增强的“ Oculus”模式运行...但是如果用户确实希望能够切换到通用Android Cardboard模式(例如,如果用户拥有被检测为“支持GearVR的”三星Android手机,但该用户只有可用的Cardboard耳机)。

但是...如果确实需要,我可以忍受分别构建“ Android Cardboard”和“ Oculus Mobile”版本。

什么是实现这一目标的好方法?

从一些明显的问题开始...

  • 我是否只是将“ Oculus”添加为目标(Unity 2018.3)XR API,并继续对Cardboard和Oculus使用相同的相机,还是需要使用Oculus专用相机预制件之一(作为当前MainCamera的同级产品),并且在编辑器中同时禁用了两者,并在运行时启用了其中一个?

  • 我是否必须显式地使用条件编译来使所有使用Oculus API的代码远离非Oculus的设备,或者仅使用运行时逻辑来确定是否可以调用Oculus库?无论哪种方式...我该怎么做?

  • 如果我必须必须为Cardboard和Oculus Mobile建立单独的目标,我该怎么做?据我所知,就构建设置而言,它们都是platform = Android。同样,我看到了如何在Player的XR设置下添加Virtual Reality SDK,但是我没有看到任何明显的方法来告诉Unity:“如果我以Cardboard为目标,请使用这组特定设置,以及这组不同的设置如果我的目标是Oculus”。

  • 是否有必须使用Unity的内部构建系统而不是Gradle的已知解决方案,或者这是一个已知的问题,没有人可以做任何事情?回到去年秋天我最初使用Unity 2018.2.9-14为Cardboard编写游戏时,我使用Gradle作为构建系统,但是当我在2018.3.8中打开项目并添加Oculus作为平台后尝试构建它时,Gradle进行构建开始失败。我从去年夏天的某个帖子中发现了“使用内部构建系统,Unity仍然不能使用Gradle为Go进行构建”的提示。

我浏览了Oculus.com上的文档,但它们主要是让我感到困惑,因为它们似乎都解决了“ Oculus Rift + Oculus Mobile的跨平台”或“(非Unity)Android本机+(非-Unity)Oculus Mobile”。

请注意,这不是“如何在Unity项目中使用{Oculus-specific API}”问题……这是“如何使用Unity定位两个相关平台,在单个Unity项目中,其中一个基本上是另一个的超集。

0 个答案:

没有答案