显示菜单使光标消失

时间:2017-09-16 16:35:02

标签: c# unity3d

单击一下,光标就会消失,如下所示:

enter image description here

如何重现:

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

  • 按下转义并触摸滑块,任何单击都会生成 光标消失。

看起来像这样:https://imgur.com/a/hefmP

如果我勾掉鼠标外观 - >将光标锁定在FPS控制器中然后这不会发生,但我也在我的FPS游戏中看到光标。

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

enter image description here

我不想把FPSController和暂停菜单联系在一起,它们也在不同的场景中。

那么在进入暂停菜单时我怎么能解锁光标呢?是否有可以在这里使用的事件模式?

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

1 个答案:

答案 0 :(得分:1)

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

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

下面是一个简单的函数来处理它。您的每个菜单打开关闭按钮都应链接到以下功能。 当您拨打电话时,请使用打开的按钮将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;
    }
}