繁体   English   中英

显示菜单使光标消失

[英]Showing menu make the cursor disappear

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

在此处输入图片说明

繁殖方法:

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

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

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

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

我试图添加Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; 暂停和取消暂停时相反,但这无济于事。 可能是因为MouseLook.cs也正在更新它们:

在此处输入图片说明

我宁可不要将FPSController和暂停菜单耦合在一起,它们也处于不同的场景中。

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

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

它已由FirstPersonController脚本中使用的MouseLook脚本修改。 一种解决方案是修改MouseLook脚本,但是简单的Asset更新将MouseLook该修改。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM