按退出键时暂停菜单不会激活

Pause Menu won't activate when I hit escape

我刚刚开始自学编码,并且一直在观看 Brackey 的教程系列。我正在尝试创建一个暂停菜单,我已经按照视频进行操作,但出于某种原因,当我按下退出键时,我无法激活菜单。我已经仔细检查了代码,与屏幕上的内容相比,它应该可以正常工作。有什么我想念的吗?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PauseMenu : MonoBehaviour
{
    public static bool isGamePaused = false;

    public GameObject pauseMenu;

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (isGamePaused)
            {
                ResumeGame();
            }
            else 
            {
                PauseGame();
            }
        }
    }
    void ResumeGame()
    {
        pauseMenu.SetActive(false);
        Time.timeScale = 1f;
        isGamePaused = false;
    }

    void PauseGame()
    {
        pauseMenu.SetActive(true);
        Time.timeScale = 0f;
        isGamePaused = true;
    }
}

现在我可以看到相关的代码和层次结构,我相信我看到了问题所在。在您的脚本中,您正在检查 Update() 中的输入,只有当脚本组件所在的游戏对象在层次结构中处于活动状态时才会调用。

当您切换暂停时,您正在激活和停用您在检查器中分配的游戏对象。作为您在具有脚本的GameObject中分配的对象,Update()在禁用后将永远不会被调用。

您有几个选项,但最简单的方法是拖入面板 pauseMenu 的参考作为参考对象以在您的脚本中切换,而不是您当前的 Canvas 对象有。这样 Canvas 就可以充当 pauseMenu 的管理器,在输入更改时切换它。