我尝试过使用XRSettings.LoadDeviceByName(),但它从未起作用。我已经检查了参数设备名称是否与当前设备名称相同,但没有任何更改。另外,我在sdk列表中添加了“无”。
XRSettings.loadedDeviceName在启动时是硬纸板。
IEnumerator testThis() {
if (string.Compare(XRSettings.loadedDeviceName, "", true) != 0) {
XRSettings.LoadDeviceByName("none");
some_text.text = XRSettings.loadedDeviceName;
yield return new WaitForSeconds(1);
XRSettings.enabled = true;
some_text.text = "Device name " + XRSettings.loadedDeviceName;
}
}
IEnumerator temp() {
some_text.text = "Device name " + XRSettings.loadedDeviceName;
yield return new WaitForSeconds(10);
StartCoroutine(testThis());
}不管我怎么检测,设备名称仍然是硬纸板。
https://docs.unity3d.com/ScriptReference/XR.XRSettings.LoadDeviceByName.html
我所做的:
发布于 2021-04-26 23:30:22
if (string.Compare(XRSettings.loadedDeviceName,"",true) != 0) {
如果我正确地理解了您想要做的事情,下面的代码将收到一个设备名称,并将使用这个名称触发LoadDevice过程。
public void VerifyDeviceName(string newDeviceName)
{
if (newDeviceName == "none")
{
Debug.Log("Will load none device");
StartCoroutine(LoadDevice(newDeviceName));
}
if (newDeviceName == "cardboard")
{
Debug.Log("Will load cardboard device");
StartCoroutine(LoadDevice(newDeviceName));
}
else
{
Debug.Log("Can't find device with name " + newDeviceName);
}
}
IEnumerator LoadDevice(string newDeviceName)
{
XRSettings.LoadDeviceByName(newDeviceName);
yield return new WaitForSeconds(10);
XRSettings.enabled = true;
Debug.Log("Loaded " + newDeviceName);
}注意:这显然不适用于编辑器,您将收到一条消息,表示您不能在编辑器模式下触发/关闭vr。
发布于 2022-01-26 12:49:27
我是靠蛮力才熬过去的。秘密不是按名字加载设备。如果您试图加载"none“,则只需初始化和重新初始化XR加载程序。
代码中的
{ XRGeneralSettings.Instance.Manager.InitializeLoader();if(XRGeneralSettings.Instance.Manager.activeLoader StartXR(){ IEnumerator返回StartXR == null){ Debug.Log(“初始化失败”);}IEnumerator{ XRGeneralSettings.Instance.Manager.activeLoader.Start();} void (){ XRGeneralSettings.Instance.Manager.activeLoader.Stop();XRGeneralSettings.Instance.Manager.activeLoader.Deinitialize();}(对不起,我可以在代码片段中使用!我刚接电话)那就按你的需要打电话吧。它应该在您的项目中打开并关闭XR。
https://stackoverflow.com/questions/67271363
复制相似问题