You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity输入系统:如何按一次空格键实现游戏暂停功能?

问题解决:单次按键切换游戏暂停/继续状态

核心问题分析

当前代码逻辑本身是正确的,但问题出在Input System的触发配置和时间缩放后的输入处理机制上:

  1. 若pause动作的触发类型设置为「持续触发」,按住空格键时会反复调用切换逻辑,导致视觉上必须按住才能保持暂停;
  2. 当Time.timeScale=0时,Input System默认的动态更新模式会停止工作,无法接收按键事件来恢复游戏。

解决步骤

1. 修正Input Action触发模式

打开你创建的PauseActionInput对应的.inputactions资源文件:

  • 找到pause动作,将其Trigger Type设置为Pressed(仅在按键按下的瞬间触发一次performed事件,而非按住期间持续触发);
  • 确认动作绑定的是空格键的Press事件,而非Hold事件。

2. 调整Input System更新模式

当Time.timeScale=0时,默认的动态更新会停止,导致输入事件无法被处理,需要修改全局设置:

  • 打开Edit > Project Settings > Input System Package > Input System Settings;
  • 将Update Mode设置为Process Events In Update或Process Events In Fixed Update(这两种模式不受Time.timeScale影响,即使时间缩放为0也能正常处理输入)。

3. 代码优化(可选)

原代码逻辑没问题,可做小优化提升健壮性:

using UnityEngine;
using UnityEngine.UI;

public class PauseManager : MonoBehaviour
{
    public float timeLeft = 0;
    public bool timeOn = false;
    public Text timeText;
    private bool _isPaused = false; // 替换静态变量为实例变量,避免全局污染
    public PauseActionInput _pauseAction;
    public AudioSource audiosource1;
    public GameObject pausemenu;

    public static PauseManager Instance; // 单例模式,方便其他脚本调用

    private void Awake()
    {
        _pauseAction = new PauseActionInput();
        Instance = this;
    }

    private void Start()
    {
        _pauseAction.PauseActionMap.pause.performed += _ => TogglePause();
    }

    private void OnEnable()
    {
        _pauseAction.Enable();
    }

    private void OnDisable()
    {
        _pauseAction.Disable();
    }

    private void TogglePause() // 函数名更直观
    {
        if (_isPaused) ResumeGame();
        else PauseGame();
    }

    public void ResumeGame()
    {
        Time.timeScale = 1;
        AudioListener.pause = false;
        pausemenu.SetActive(false);
        _isPaused = false;
        Debug.Log("游戏已继续");
    }

    public void PauseGame()
    {
        Time.timeScale = 0;
        AudioListener.pause = true;
        pausemenu.SetActive(true);
        _isPaused = true;
        Debug.Log("游戏已暂停");
    }
}

内容的提问来源于stack exchange,提问作者tobyteng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 16:42:56