在 WEBGL 上与 Unity UI 交互时失去焦点
Loosing focus when interacting with Unity UI on WEBGL
当我 运行 我在由 Unity 构建的 webGl 上的应用程序时,当我与 UI 元素交互时,我失去了焦点。我有简单的十字准线,当菜单未启用时我锁定了光标。
这是一个示例代码
if(isCanvasMode)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
else
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
在此阶段一切正常,我没有看到光标和导航按预期工作。
当我打开菜单 (isCanvasMode = true) 时,一切都按预期工作,我可以使用光标在菜单项上导航。当我关闭菜单并将 isCanvasMode 设置为 false 然后我失去焦点并且使用鼠标在水平方向上导航时出现问题,光标突然移动到另一个屏幕(只有当我关闭菜单然后再次单击统一时它才能正常工作window)。
如果有任何不同,我正在使用 TextMeshPro Button。
设法找到解决方案,以防万一有人遇到类似问题。
所以之前当我点击关闭按钮时,它调用了将光标设置为锁定状态的函数:
Cursor.lockState = CursorLockMode.Locked
解决方法:
创建从 Button class 派生的自定义 Button 并覆盖 OnPointerDown 方法。代码看起来像那样。
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
Cursor.lockState = CursorLockMode.Locked
}
当我 运行 我在由 Unity 构建的 webGl 上的应用程序时,当我与 UI 元素交互时,我失去了焦点。我有简单的十字准线,当菜单未启用时我锁定了光标。
这是一个示例代码
if(isCanvasMode)
{
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
else
{
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
在此阶段一切正常,我没有看到光标和导航按预期工作。 当我打开菜单 (isCanvasMode = true) 时,一切都按预期工作,我可以使用光标在菜单项上导航。当我关闭菜单并将 isCanvasMode 设置为 false 然后我失去焦点并且使用鼠标在水平方向上导航时出现问题,光标突然移动到另一个屏幕(只有当我关闭菜单然后再次单击统一时它才能正常工作window)。 如果有任何不同,我正在使用 TextMeshPro Button。
设法找到解决方案,以防万一有人遇到类似问题。 所以之前当我点击关闭按钮时,它调用了将光标设置为锁定状态的函数:
Cursor.lockState = CursorLockMode.Locked
解决方法: 创建从 Button class 派生的自定义 Button 并覆盖 OnPointerDown 方法。代码看起来像那样。
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
Cursor.lockState = CursorLockMode.Locked
}