首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一XR.Settings.LoadDeviceByName()不加载设备

统一XR.Settings.LoadDeviceByName()不加载设备
EN

Stack Overflow用户
提问于 2021-04-26 17:41:05
回答 2查看 425关注 0票数 0

我尝试过使用XRSettings.LoadDeviceByName(),但它从未起作用。我已经检查了参数设备名称是否与当前设备名称相同,但没有任何更改。另外,我在sdk列表中添加了“无”。

XRSettings.loadedDeviceName在启动时是硬纸板。

代码语言:javascript
复制
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

我所做的:

  1. but作为虚拟现实SDKs
  2. 使用XR插件管理2.1禁用虚拟现实支持2.2将摄像机转换为XR-钻机2.3使用XR-pluginManagement2.4中关闭VR的代码备注:第2步的所有过程都在iOS构建中工作,但在安卓构建中失败。2.5 https://docs.unity3d.com/Packages/com.unity.xr.management@4.0/manual/index.html
  3. Tried XRSettings.LoadDeviceByName(“无”);XRSettings.LoadDeviceByName("");XRSettings.LoadDeviceByName("None");
EN

回答 2

Stack Overflow用户

发布于 2021-04-26 23:30:22

  1. 确保“无”首先出现在VR SDK中,然后是Cardboard.

  1. 我发现你的比较有问题,没有价值

if (string.Compare(XRSettings.loadedDeviceName,"",true) != 0) {

如果我正确地理解了您想要做的事情,下面的代码将收到一个设备名称,并将使用这个名称触发LoadDevice过程。

代码语言:javascript
复制
    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。

票数 0
EN

Stack Overflow用户

发布于 2022-01-26 12:49:27

我是靠蛮力才熬过去的。秘密不是按名字加载设备。如果您试图加载"none“,则只需初始化和重新初始化XR加载程序。

  1. 禁用项目设置中的“启动时初始化XR”-> XR插件管理

代码中的

  1. 使用这两种方法

{ 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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67271363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档