【问题标题】:Unity - enable VR support for just one sceneUnity - 仅对一个场景启用 VR 支持
【发布时间】:2019-05-07 07:37:38
【问题描述】:

我正在使用 unity(2019.1.1 版)构建 Android/IOS 应用程序, 我打开了一个 3D 项目,尽管项目中的所有场景都是 2D 的,但视频播放器假定有 2 种模式 VR 和 360 度显示

所以我只需要一个场景的 VR 支持(即视频播放器,目前使用 google-vr-sdk 构建)。其余场景为 2D,不需要启用 VR。

但是,如果我选择不启用 VR 设置(XR 设置),360 度视频不会通过运动传感器移动,但应用程序的其余部分工作正常。如果我启用了 VR 设置,我根本看不到主屏幕。

我目前的解决方法是开发两个应用程序,一个只包含视频,另一个应用程序具有其余功能。但我不知道如何连接它们。我想知道是否有一种方法可以在一个应用程序中同时执行这两种操作?如果没有,我该如何连接这两个项目?

更新:我尝试将 VR 播放器项目导出为自定义统一包,然后将其导入我的主项目,但所有 2D 页面再次按预期工作,但播放器不响应移动

【问题讨论】:

  • 也许这个链接会有所帮助:docs.unity3d.com/ScriptReference/XR.XRSettings-enabled.html,所以在特定场景中启用,否则禁用
  • 似乎正是我所需要的,但在实现这一点时,电影仍然是 2D
  • 您是否尝试在加载新场景之前打开它们?此外,看不到家庭场景的原因可能是家庭场景中的相机对象。它是否受到传感器的控制/影响?

标签: unity3d google-vr-sdk


【解决方案1】:

从 reddit 上的一个人那里找到了这个答案。它对我来说很棒! :

在纸板上方的 XR 设置赌注中添加虚拟支持(我假设这是纸板?)。

然后使用它来启动 VR:

IEnumerator EnableCardboard() {
    // Empty string loads the "None" device.
    XRSettings.LoadDeviceByName("CardBoard");
    // Must wait one frame after calling `XRSettings.LoadDeviceByName()`.
    yield return null;
    // Not needed, since loading the None (`""`) device takes care of 
    this.XRSettings.enabled = true;
   }

或者这个停止 VR:

public IEnumerator StopCardboard(){
    XRSettings.LoadDeviceByName("");
    yield return null;
    XRSettings.enabled = false;
    ResetCameras();
    Screen.orientation = ScreenOrientation.Portrait;
}

void ResetCameras() {
    // Camera looping logic copied from GvrEditorEmulator.cs
    for (int i = 0; i < Camera.allCameras.Length; i++) {
        Camera cam = Camera.allCameras[i];
        if (cam.enabled && cam.stereoTargetEye != StereoTargetEyeMask.None) {
            // Reset local position.
            // Only required if you change the camera's local position while in 2D mode.
            cam.transform.localPosition = Vector3.zero;

            // Reset local rotation.
            // Only required if you change the camera's local rotation while in 2D mode.
            cam.transform.localRotation = Quaternion.identity;

            // No longer needed, see issue github.com/googlevr/gvr-unity-sdk/issues/628.
            // cam.ResetAspect();

            // No need to reset `fieldOfView`, since it's reset automatically.
        }
    }
}

确保将它们称为协程 现在我只需要处理启动画面

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 2023-03-09
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多