从代码

时间:2016-04-18 19:00:29

标签: c# unity3d unity5 virtual-reality

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

我想要一个UI菜单,用户可以在" VR模式和#34;之间切换。和正常模式。我默认不想要VR模式,因为它应该是运行时的选项。我知道有一个设置为"支持虚拟现实"在构建设置中,但同样,我不希望默认启用此功能。

3 个答案:

答案 0 :(得分:11)

在顶部添加using UnityEngine.XR;

使用空字符串调用XRSettings.LoadDeviceByName(""),然后调用XRSettings.enabled = false;以禁用启动功能中的VR以禁用VR。

如果您想稍后启用此功能,请使用VR名称后跟XRSettings.LoadDeviceByName("daydream")来呼叫XRSettings.enabled = true;

您应该在每个函数调用之间等待一个帧。这需要做一个corutine功能。

此外,在某些VR设备上,您必须转到修改 - > 项目设置 - > 播放器,并确保< strong>支持虚拟现实复选框已检查(true),然后才能生效。然后,您可以在“开始”功能中将其禁用,并随时启用它。

修改

众所周知,这适用于某些VR设备而非所有VR设备。虽然,它应该适用于Daydream 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()启用vr,DisableVR()启用vr。如果您使用的是白日梦以外的任何内容,请将该VR设备的名称传递给LoadDevice功能中的EnableVR()功能。

答案 1 :(得分:2)

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

启用通话:

XRGeneralSettings.Instance.Manager.InitializeLoader();

要禁用通话:

XRGeneralSettings.Instance.Manager.DeinitializeLoader();

答案 2 :(得分:0)

 public void Awake() {
          StartCoroutine(SwitchToVR(()=>{
                Debug.Log("Switched to VR Mode");
          }));

          //For disable VR Mode
          XRSettings.enabled = false;
  }
 
  IEnumerator SwitchToVR(Action callback) {
            // Device names are lowercase, as returned by `XRSettings.supportedDevices`.
            // Google original, makes you specify
            // string desiredDevice = "daydream"; // Or "cardboard".
            // XRSettings.LoadDeviceByName(desiredDevice);
            // this is slightly better;
            
            string[] Devices = new string[] { "daydream", "cardboard" };
             XRSettings.LoadDeviceByName(Devices);
      
            // Must wait one frame after calling `XRSettings.LoadDeviceByName()`.
            yield return null;
          
            // Now it's ok to enable VR mode.
            XRSettings.enabled = true;
            callback.Invoke();
   }