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

如何实现占领基地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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 05:36:53