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

Unity C#开发如何实现等待3秒后自动跳转回主菜单功能

Unity C# 实现跳杀后延迟3秒返回主菜单方案

前置要求:先将主菜单场景添加到File > Build Settings的Scenes In Build列表中,记录主菜单的场景名称或对应的Build序号。
禁止使用Thread.Sleep()实现等待,该方法会阻塞Unity主线程,导致跳杀动画、音效全部卡住无法播放。


推荐方案:协程实现(逻辑可控性强,适配复杂跳杀流程)

协程等待过程不会阻塞主线程,跳杀动画、音效可以正常播放,也方便在等待过程中插入其他过渡逻辑。
把以下脚本挂在跳杀管理对象(比如JumpscareManager、常驻GameManager)上即可:

using UnityEngine;
using UnityEngine.SceneManagement;

public class JumpscareHandler : MonoBehaviour
{
    [Tooltip("主菜单的场景名称,需和Build Settings中完全一致")]
    public string mainMenuSceneName = "MainMenu";
    [Tooltip("跳杀后等待返回菜单的时长")]
    public float waitBeforeReturn = 3f;

    /// <summary>
    /// 电子玩偶触发跳杀时,外部调用这个方法即可
    /// </summary>
    public void OnJumpscareTriggered()
    {
        // 此处写你已有的跳杀逻辑:播放跳杀动画、触发音效、禁用玩家输入、停止所有玩偶AI
        // ......
        
        // 启动延迟跳转协程
        StartCoroutine(DelayLoadMenu());
    }

    private System.Collections.IEnumerator DelayLoadMenu()
    {
        // 普通等待:受Time.timeScale影响,适合跳杀过程中不修改时间缩放的场景
        yield return new WaitForSeconds(waitBeforeReturn);
        
        // 如果你跳杀时会把timeScale设为0(比如暂停其他游戏逻辑),把上面那行换成下面这个,用真实时间等待
        // yield return new WaitForSecondsRealtime(waitBeforeReturn);

        // 加载主菜单场景
        SceneManager.LoadScene(mainMenuSceneName);
        // 如果用Build序号加载,替换成下面这行,数字填主菜单在Scenes In Build里的序号
        // SceneManager.LoadScene(0);
    }
}

轻量方案:Invoke实现(适合简单逻辑场景)

如果你的跳杀逻辑非常简单,没有中途打断、物体销毁的情况,可以用Invoke直接延时调用加载方法,代码更简洁:

using UnityEngine;
using UnityEngine.SceneManagement;

public class JumpscareHandler : MonoBehaviour
{
    public string mainMenuSceneName = "MainMenu";
    public float waitBeforeReturn = 3f;

    public void OnJumpscareTriggered()
    {
        // 原有跳杀逻辑
        // ......
        
        // 延时3秒调用加载菜单方法
        Invoke(nameof(LoadMainMenu), waitBeforeReturn);
    }

    private void LoadMainMenu()
    {
        SceneManager.LoadScene(mainMenuSceneName);
    }
}

注意事项

  • 如果触发跳杀后,挂载脚本的物体会被提前销毁,不要用上述两种方法直接写在该物体上,要把延时跳转逻辑放在场景切换过程中不会被销毁的常驻单例对象(比如GameManager)上,否则等待逻辑会被中断,无法触发跳转
  • 用场景名加载时一定要核对拼写,大小写不同也会导致加载失败;用Build序号加载更不容易出拼写错误,但要注意调整场景顺序时同步更新序号
  • 等待跳转的3秒内建议禁用所有玩家输入、停掉其他玩偶的AI逻辑,避免出现逻辑冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:09:28