unity3d - 在 WEBGL 上与 Unity UI 交互时失去焦点
问题描述
当我在由 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。
解决方案
设法找到解决方案,以防万一有人面临类似问题。所以以前当我点击关闭按钮时,它调用了将光标设置为锁定状态的函数:
Cursor.lockState = CursorLockMode.Locked
解决方案:创建从 Button 类派生的自定义 Button 并覆盖 OnPointerDown 方法。代码将如下所示。
public override void OnPointerDown(PointerEventData eventData)
{
base.OnPointerDown(eventData);
Cursor.lockState = CursorLockMode.Locked
}
推荐阅读
- python - lib/pythonX.Y/no-global-site-packages.txt 的路径
- go - Go 包函数中的模拟函数
- android - 验证者 GSON 类型适配器
- r-markdown - bookdown 中不同引文包的问题
- amazon-web-services - 如何让现有用户成为 AWS Redshift 中的超级用户
- html - 当视口太长时,文本在跨度中重叠
- java - onResponse(String response) try { JSONObject jsonObject=new JSONObject(response);java.lang.String 无法转换为 JSONObject
- javascript - 在加载所有异步函数之前加载页面
- javascript - 将两个数组中的数据写入一个文档
- r - 文件上传后闪亮的 dplyr 过滤器不起作用