当我点击退出时,暂停菜单不会激活

问题描述

我刚刚开始自学编程,并且一直在观看 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 在层次结构中处于活动状态时调用。

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

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