不明白为什么它不识别关键输入

时间:2018-07-06 17:31:14

标签: c# unity3d input

因此,我现在要统一制作游戏,现在要为其制作暂停菜单。我正在为此使用C#,但遇到了一个问题,我无法真正解决问题。当我按Escape键时,应该使“暂停”菜单实体处于活动状态并且对用户可见,以及在游戏中冻结时间。但是当我按Escape键时,程序似乎无法识别输入。我尝试做不同的键,但它们没有用。我通过执行Debug.Log命令来确保输入是问题所在,当我测试时,我仍然没有任何触发它的迹象。这是我希望有人能帮助我的代码。

using UnityEngine;

public class PauseMenu : MonoBehaviour
{

public static bool GameIsPaused = true;

public GameObject PauseMenuUI;
// Update is called once per frame
void Update()
{
    if (Input.GetKeyDown(KeyCode.Escape))
    {
        if (GameIsPaused)
        {
            Resume();
        }
        else
        {
            Pause();
        }


    }
}

void Resume()
{
    PauseMenuUI.SetActive(false);
    Time.timeScale = 1f;
    GameIsPaused = false;

}


void Pause()
{
    PauseMenuUI.SetActive(true);
    Time.timeScale = 0f;
    GameIsPaused = true;


  }
}

1 个答案:

答案 0 :(得分:1)

正如我们在评论中所讨论的,PauseMenu-脚本所附加的GameObject处于不活动状态。

无效的游戏对象将禁用其所有组件。

  如果启用了MonoBehaviour,则每帧调用

更新。   https://docs.unity3d.com/ScriptReference/MonoBehaviour.Update.html

因此您的更新代码未运行,因此从不检测何时按下Escape。