C# 从代码中启用/禁用VR

C# 从代码中启用/禁用VR,c#,unity3d,unity5,virtual-reality,C#,Unity3d,Unity5,Virtual Reality,对于部署到Android设备的应用程序,如何在Unity中将显示设置为立体 我想要一个用户界面菜单,用户可以在“虚拟现实模式”和正常模式之间切换。我不希望在默认情况下使用VR模式,因为它在运行时应该是一个选项。我知道在构建设置中有一个“支持虚拟现实”的设置,但同样,我不希望在默认情况下启用该设置。使用UnityEngine.XR包含在顶部 调用XRSettings.LoadDeviceByName(“”),使用空字符串后跟XRSettings.enabled=false在启动功能中禁用VR以禁用

对于部署到Android设备的应用程序,如何在Unity中将显示设置为立体


我想要一个用户界面菜单,用户可以在“虚拟现实模式”和正常模式之间切换。我不希望在默认情况下使用VR模式,因为它在运行时应该是一个选项。我知道在构建设置中有一个“支持虚拟现实”的设置,但同样,我不希望在默认情况下启用该设置。

使用UnityEngine.XR包含
在顶部

调用
XRSettings.LoadDeviceByName(“”)
,使用空字符串后跟
XRSettings.enabled=false在启动功能中禁用VR以禁用VR

以后要启用时,请调用
XRSettings.LoadDeviceByName(“daydream”)
,VR名称后跟
XRSettings.enabled=true

您应该在每个函数调用之间等待一帧。这需要一个corutine函数来完成

此外,在某些VR设备上,您必须进入编辑->项目设置->播放器,并确保选中了支持虚拟现实复选框,然后此项操作才能正常工作。然后,您可以在启动功能中禁用它,并随时启用它

编辑

这是已知的工作在一些虚拟现实设备,而不是所有的虚拟现实设备。尽管如此,它应该在白日梦VR上工作。完整的代码示例:

IEnumerator LoadDevice(string newDevice, bool enable)
{
    XRSettings.LoadDeviceByName(newDevice);
    yield return null;
    XRSettings.enabled = enable;
}

void EnableVR()
{
    StartCoroutine(LoadDevice("daydream", true));
}

void DisableVR()
{
    StartCoroutine(LoadDevice("", false));
}
调用
EnableVR()
启用虚拟现实,调用
DisableVR()
禁用虚拟现实。如果您使用的不是daydream,请将该虚拟现实设备的名称传递给
EnableVR()
函数中的
LoadDevice
函数

对于较新版本的Unity(例如2019.4.0f1),您可以使用该软件包

要启用呼叫,请执行以下操作:

XRGeneralSettings.Instance.Manager.InitializeLoader();
XRGeneralSettings.Instance.Manager.DeinitializeLoader();
要禁用呼叫:

XRGeneralSettings.Instance.Manager.InitializeLoader();
XRGeneralSettings.Instance.Manager.DeinitializeLoader();

我试过了,但没有任何效果。这个代码段是否有特定的地方可以启用它。您使用的是哪个Unity版本?该版本适用。根据Unity,它在编辑器中不起作用。它将在独立版本中工作。尝试一下。我尝试在Awake()中启用它,然后记录UnityEngine.VR.VRSettings.enabled的值,结果仍然为false。就像设置没有花很长时间。。。你说得对,这就像是10天,在软件年里是5年!!:)等一下,明天我会试试的。。。。。。。。对不起,没有在这里看到你的消息…终于找到了正确的答案。谢谢你。以下是文档:对于面临相同问题的任何人,首先需要包括这一行:使用UnityEngine.XR.Management;