首页 > 解决方案 > 当我点击逃生时,暂停菜单不会激活

问题描述

我刚刚开始自学编码,并且一直在看 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;
    }
}

标签: c#unity3dkeycodepause

解决方案


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

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

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


推荐阅读