显示菜单使光标消失

2024-03-18

单击时光标消失,如下所示:

如何重现:

  • 获取 Game Jam 菜单模板:https://www.assetstore.unity3d.com/en/#!/content/40465 https://www.assetstore.unity3d.com/en/#!/content/40465
  • 使用从标准导入的 FPS 控制器添加另一个场景 资产。
  • 在 UI -> 启动选项组件中勾选“更改场景”。

  • 按 Esc 键并触摸滑块,任何单击都会使 光标消失。

它看起来像这样:https://i.stack.imgur.com/Xq1NR.jpg https://i.stack.imgur.com/Xq1NR.jpg

如果我在 FPS 控制器中勾选鼠标外观 -> 锁定光标,则不会发生这种情况,但我也会在 FPS 游戏中看到光标。

我尝试添加Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false;暂停和取消暂停时则相反,但没有帮助。可能是因为MouseLook.cs还在更新它们:

我不想将 FPSController 和暂停菜单结合起来,而且它们也位于不同的场景中。

那么进入暂停菜单时如何解锁光标呢?这里有可以使用的事件模式吗?

它还会使场景变暗,但这是另一个问题了。


它已被修改为MouseLook脚本中使用的FirstPersonController脚本。一种解决方案是修改MouseLook脚本,但简单的资产更新就会终止该修改。

解决此问题的正确方法是禁用FirstPersonController当您打开任何菜单时编写脚本,然后在关闭该菜单时重新启用它。另外,当您禁用它时,请手动设置Cursor.lockState to None并将光标设置为可见。

下面是一个可以处理这个问题的简单函数。你的每一份菜单open and close按钮应链接到下面的功能。当你调用它时,传递false用打开按钮和true使用关闭按钮:

void enableFPS(bool enable)
{
    GameObject fpsObj = GameObject.Find("FPSController");
    FirstPersonController fpsScript = fpsObj.GetComponent<FirstPersonController>();

    if (enable)
    {
        //Enable FPS script
        fpsScript.enabled = true;
    }
    else
    {
        //Disable FPS script
        fpsScript.enabled = false;
        //Unlock Mouse and make it visible
        Cursor.lockState = CursorLockMode.None;
        Cursor.visible = true;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示菜单使光标消失 的相关文章

随机推荐