adas123514 2022-10-11 19:33 采纳率: 50%
浏览 426
已结题

如何在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来调出暂停界面?

  • 写回答

2条回答 默认 最新

  • 周周的Unity小屋 2022-10-11 22:37
    关注

    你可以通过定义一些枚举都标识你当前游戏处于什么状态,当你按下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);//暂停界面出现
            }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月12日
  • 已采纳回答 10月12日
  • 创建了问题 10月11日

悬赏问题

  • ¥15 Arduino电机和openmv连接异常
  • ¥15 Arcgis河网分级报错
  • ¥200 java+appium2.1+idea
  • ¥20 请帮我做一个EXE的去重TXT文本
  • ¥15 工价表引用工艺路线,应如何制作py和xml文件
  • ¥15 根据历史数据,推荐问题类型
  • ¥15 需要仿真图,简单的二阶系统实例
  • ¥15 stm32光控照明仿真
  • ¥15 使用人工智能的方法生成满足一定统计参数要求的随机数序列
  • ¥15 SENT协议中相关问题咨询