【问题标题】:Loosing focus when interacting with Unity UI on WEBGL在 WEBGL 上与 Unity UI 交互时失去焦点
【发布时间】:2020-11-16 06:29:40
【问题描述】:

当我在由 Unity 构建的 webGl 上运行我的应用程序时,我在与 UI 元素交互时失去了焦点。我有简单的十字准线,当菜单未启用时,我锁定了光标。

这是一个示例代码

if(isCanvasMode)
    {
      Cursor.visible = true;
      Cursor.lockState = CursorLockMode.None;
    }
    else
    {
      Cursor.visible = false;
      Cursor.lockState = CursorLockMode.Locked;
    }

在这个阶段一切正常,我没有看到光标和导航按预期工作。 当我打开菜单(isCanvasMode = true)时,一切正常,我可以用光标在菜单项上导航。当我关闭菜单并将 isCanvasMode 设置为 false 时出现问题,然后我失去焦点,当用鼠标在水平方向上导航时,光标突然移动到另一个屏幕(只有当我关闭菜单然后再次单击统一时它才能正常工作窗户)。 如果这有什么不同,我正在使用 TextMeshPro Button。

【问题讨论】:

    标签: unity3d user-interface unity-webgl


    【解决方案1】:

    设法找到解决方案,以防万一有人遇到类似问题。 所以之前当我点击关闭按钮时,它调用了将光标设置为锁定状态的函数:

    Cursor.lockState = CursorLockMode.Locked
    

    解决方案: 创建从 Button 类派生的自定义 Button 并覆盖 OnPointerDown 方法。代码将如下所示。

    public override void OnPointerDown(PointerEventData eventData)
      {
        base.OnPointerDown(eventData);
        Cursor.lockState = CursorLockMode.Locked
      }
    

    【讨论】:

      猜你喜欢
      • 2019-07-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2020-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多