Ativar / desativar o VR do código

Como posso definir a exibição para estereoscópico programaticamente no Unity para um aplicativo implantado em um dispositivo Android?

Eu quero um menu de interface do usuário onde o usuário pode alternar entre “modo VR” e modo normal. Eu não quero o modo VR por padrão, pois deve ser uma opção em tempo de execução. Eu sei que há uma configuração para “Realidade Virtual Suportada” nas configurações de compilation, mas, novamente, não quero isso ativado por padrão.

Inclua using UnityEngine.XR; no topo.

Chame XRSettings.LoadDeviceByName("") com string vazia seguida por XRSettings.enabled = false; para desabilitar o VR na function de início para desabilitar o VR.

Quando você quiser ativá-lo mais tarde, chame XRSettings.LoadDeviceByName("daydream") com o nome VR seguido por XRSettings.enabled = true; .

Você deve esperar por um quadro entre cada chamada de function. Isso exige que isso seja feito uma function de corutine.

Além disso, em alguns dispositivos de RV, você deve ir até Editar -> Configurações do Projeto -> Player e verificar se a checkbox de seleção Realidade Virtual Suportada está marcada (true) antes que isso funcione. Então você pode desativá-lo na function Iniciar e ativá-lo quando quiser.

EDITAR :

Sabe-se que isso funciona em alguns dispositivos de RV e não em todos os dispositivos de RV. Embora, deva funcionar no Daydream VR. Amostra de código completa:

 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)); } 

Chame EnableVR() para habilitar vr e DisableVR() para desativá-lo. Se você estiver usando algo diferente de devaneio, passe o nome desse dispositivo VR para a function LoadDevice na function EnableVR() .