问题描述
我知道之前已经有人问过这个问题,但是我无法正确实现它。当我的播放器与标记有“死亡”或“下一个关卡”的某些对象发生碰撞时,它们将加载各自的场景,但是我希望在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());
}