Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d Unity-仅为一个场景启用VR支持_Unity3d_Google Vr Sdk - Fatal编程技术网

Unity3d Unity-仅为一个场景启用VR支持

Unity3d Unity-仅为一个场景启用VR支持,unity3d,google-vr-sdk,Unity3d,Google Vr Sdk,我正在使用unity(2019.1.1版)构建Android/IOS应用程序, 我打开了一个3D项目,虽然项目中的所有场景都是2D,但视频播放器除外,它应该有两种模式VR和360显示 所以我只需要一个场景的VR支持(这是视频播放器,目前使用google VR sdk构建)。其余场景为2D,不需要启用VR 但是,如果我选择不启用VR设置(XR设置),360视频不会通过运动传感器移动,但应用程序的其余部分工作正常。如果我启用了VR设置,我根本看不到主屏幕 我目前的工作是开发两个应用程序,一个只包含视

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

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

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

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


更新:我试图将VR播放器项目导出为定制的unity软件包,然后将其导入到我的主项目中,但所有2D页面都按预期工作,但播放器对移动没有反应。

从reddit中的一个家伙那里找到了这个答案。这对我来说太棒了

在XR设置中添加虚拟性支持,在硬纸板上设置None(我假设这是硬纸板?)

然后使用此选项启动虚拟现实:

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.
        }
    }
}
public IEnumerator(){
XRSettings.LoadDeviceByName(“”);
收益返回空;
XRSettings.enabled=false;
重置摄像头();
Screen.orientation=ScreenOrientation.grait;
}
无效重置摄影机(){
//从GvrEditorEmulator.cs复制的摄影机循环逻辑
对于(int i=0;i
确保将它们称为协同程序
现在我只需要处理启动屏幕

也许这个链接会有帮助:,所以在特定场景中启用和禁用其他功能似乎正是我所需要的,但在实现此功能时,电影仍然是2。在加载新场景之前,您是否尝试过打开它们?此外,看不到主场景的原因可能是主场景中的摄影机对象。它是否受到传感器的控制/影响?