显示菜单使光标消失

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

在此处输入图像描述

如何重现:

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

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

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

如果我勾选鼠标外观 – >锁定光标在FPS控制器中,那么这不会发生,但我也看到了我的FPS游戏中的光标。

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

在此处输入图像描述

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

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

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

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

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

下面是一个简单的函数来处理它。 每个菜单打开关闭按钮都应链接到下面的function。 当你调用它时,使用open按钮将false传递给它,并使用关闭按钮对其进行true

 void enableFPS(bool enable) { GameObject fpsObj = GameObject.Find("FPSController"); FirstPersonController fpsScript = fpsObj.GetComponent(); 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; } }