Unity2D:SceneManager加载下一个场景之前的延迟

问题描述

我知道之前已经有人问过这个问题,但是我无法正确实现它。当我的播放器与标记有“死亡”或“下一个关卡”的某些对象发生碰撞时,它们将加载各自的场景,但是我希望在SceneManager加载下一个场景之前要有一个延迟时间

private void OnTriggerEnter2D(Collider2D other)

if (other.gameObject.CompareTag("Next"))
 
// I want about a 1 second delay here//
        
{ SceneManager.LoadScene("Level 2"); }

希望你们能帮助我,非常感谢帮助。

解决方法

听起来像您想要等待几秒钟后再执行一段代码。通常这是不可能的,因为Unity在绘制下一帧之前会等待代码完成执行。

您想要的是一些可以在继续运行之前等待一定数量帧的代码。为此,使用Coroutines

因此,当玩家被击中时,您想启动一个协程,等待1秒后加载下一个场景。

这样定义协程:

IEnumerator NextLevelAfterWait() {
    yield return new WaitForSeconds(1.0f);
    
    SceneManager.LoadScene("Level 2");
}

然后在正确的时间调用协程,如下所示:

private void OnTriggerEnter2D(Collider2D other) {
    if (other.gameObject.CompareTag("Next"))
        StartCoroutine(NextLevelAfterWait()); 
}