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

如何在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小屋 Unity3D领域优质创作者 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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里