如何在unity结束时阻止键盘操作

这边我设计了一个暂停界面和一个失败界面。
但当我失败界面触发时,我还是可以通过按下ESC来调出暂停界面。


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

public class gm : MonoBehaviour
{
    public GameObject panel;//失败界面
    public GameObject nisbd;//暂停界面
    // Start is called before the first frame update
    void Start()
    {
        panel.SetActive(false);
        nisbd.SetActive(false);
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))//获取ESC
        {
            Time.timeScale = 0;
            nisbd.SetActive(true);//暂停界面出现
        }
        
    }

    public void GameOver()//结束
    {
        Time.timeScale = 0;
        panel.SetActive(true);//失败界面出现

    }
    public void OnResume()//继续
    {
        Time.timeScale = 1;
        nisbd.SetActive(false);
    }
    public void Restart()//重开
    {
        Time.timeScale = 1;
        SceneManager.LoadScene(1);
    }
    public void Res()//返回主界面(切换场景)
    {
        Time.timeScale = 1;
        SceneManager.LoadScene(0);
    }
   
}

我想问一下,怎么样我才能在失败界面出来时,不能通过按下ESC来调出暂停界面?

你可以通过定义一些枚举都标识你当前游戏处于什么状态,当你按下esc键的时候去判断符合你这个状态的时候才处理什么样的逻辑。当然就你目前的代码而言,简单的用布尔变量标识一下也是 可以的。比如你可以定义一个全局布尔变量private bool bLose=false;当你失败时,在GameOver方法里将该变量置为true,即bLose=true;
在你的Update方法里判断按下Esc键时再加一层判断:如果当前时失败状态直接返回return掉,不会显示暂停界面

        if (Input.GetKeyDown(KeyCode.Escape))//获取ESC
        {
            if(bLose) return;
            Time.timeScale = 0;
            nisbd.SetActive(true);//暂停界面出现
        }


你应该判断一下当前是什么状态,才执行对应的方法啊
比如还没有start之前是一个状态,按下esc可能是退出游戏
已经start是一个状态,按下是暂停
已经gameover是一个状态,按下esc回到主界面