如何在Unity暂停菜单中禁用输入并停止分数计数
现有代码逻辑说明
这套实现是事件驱动的全局状态管理模式,和你之前用单个布尔值控制暂停的逻辑核心区别是:状态切换时会自动广播通知所有订阅了OnGameStateChanged事件的业务模块,不需要在每个脚本的Update周期里反复判断暂停状态,模块间耦合度更低。你之前写在角色移动脚本里的逻辑就是典型的订阅实现:状态切到暂停时直接禁用移动脚本,自然就不会执行移动逻辑。
输入禁用实现
和移动脚本的实现逻辑完全一致:
- 如果你的输入逻辑统一封装在单独的输入管理脚本中,直接订阅
OnGameStateChanged事件,暂停时把输入脚本的enabled设为false即可,所有输入检测逻辑都会停止执行,示例如下:
public class PlayerInputHandler : MonoBehaviour { void Start() { GameStateManager.Instance.OnGameStateChanged += OnGameStateChanged; } private void OnDestroy() { GameStateManager.Instance.OnGameStateChanged -= OnGameStateChanged; } private void OnGameStateChanged(GameState newGameState) { enabled = newGameState == GameState.Gameplay; } void Update() { // 原有输入检测逻辑,脚本禁用后不会执行 if(Input.GetKeyDown(KeyCode.Space)) { // 跳跃逻辑 } } }
- 如果输入逻辑分散在各个业务脚本中,也可以在每个输入判断的开头加状态校验:
void Update() { // 暂停状态直接跳过输入检测 if(GameStateManager.Instance.CurrentGameState == GameState.Paused) return; // 原有输入逻辑 }
分数累加停止实现
分两种常见场景处理:
- 自动累加类分数(比如按时间周期固定加分):在分数管理脚本中订阅状态变化事件,暂停时停止累加的协程/Invoke,恢复游戏时重新启动即可。
- 事件触发类分数(比如击杀敌人、拾取道具加分):在加分方法的最开头加状态判断,暂停状态下直接不执行加分逻辑即可。
示例如下:
public class ScoreManager : MonoBehaviour { public int currentScore; private Coroutine autoAddScoreCoroutine; void Start() { GameStateManager.Instance.OnGameStateChanged += OnGameStateChanged; autoAddScoreCoroutine = StartCoroutine(AutoAddScore()); } private void OnDestroy() { GameStateManager.Instance.OnGameStateChanged -= OnGameStateChanged; } private void OnGameStateChanged(GameState newGameState) { if(newGameState == GameState.Paused) { if(autoAddScoreCoroutine != null) StopCoroutine(autoAddScoreCoroutine); } else { autoAddScoreCoroutine = StartCoroutine(AutoAddScore()); } } // 自动累加分数协程 IEnumerator AutoAddScore() { while(true) { currentScore += 5; yield return new WaitForSeconds(1f); } } // 事件触发加分方法 public void AddScoreOnEvent(int addValue) { // 暂停状态下不执行加分 if(GameStateManager.Instance.CurrentGameState != GameState.Gameplay) return; currentScore += addValue; } }
如果你不想每个脚本都订阅事件,也可以直接在需要判断暂停的逻辑开头加状态校验,两种实现方式都可以按需选择。
内容的提问来源于stack exchange,提问作者imbruceter
相关产品推荐
相关产品推荐

