显示菜单使光标消失
单击一下,光标就会消失,如下所示:
如何重现:
- 获取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; } }