如何实现占领基地5秒后自动切换至主菜单?
实现占领基地5秒后自动切换主菜单的正确方式
你的代码存在核心逻辑问题:Update方法每帧都会调用StartCoroutine,这会导致游戏运行时瞬间开启大量Timer协程,完全无法实现“占领基地后等待5秒切换”的需求。
正确的实现思路是:仅当基地被占领(ImagePoint.fillAmount == 1f)且尚未启动计时时,才启动一次计时协程,避免重复触发。
修正后的代码如下:
// 标记是否已经开始计时,防止重复启动协程 private bool isTiming = false; private void Update() { // 当基地被占领且未开始计时时,启动计时 if (ImagePoint.fillAmount == 1f && !isTiming) { StartCoroutine(StartCountdownToMainMenu()); } } IEnumerator StartCountdownToMainMenu() { isTiming = true; // 标记已开始计时 yield return new WaitForSeconds(5f); // 再次确认基地仍处于被占领状态(可选,防止中途状态变化) if (ImagePoint.fillAmount == 1f) { SceneManager.LoadScene("MainMenu"); } isTiming = false; // 重置标记(如果需要支持多次触发的话) }
额外说明:
- 加入
isTiming布尔变量,确保同一时间只有一个计时协程在运行 - 协程内的二次状态判断是可选的,用于避免基地在5秒计时过程中被夺回的情况下误切换场景
- 记得确保代码已引用
using UnityEngine.SceneManagement;,否则SceneManager会报错
内容的提问来源于stack exchange,提问作者sta1245
相关产品推荐
相关产品推荐

