如何延迟我在 Unity 中切换场景的脚本?

How can I delay my script for switching scenes in Unity?

我有一个脚本已连接到 Unity 中的一个切换场景的按钮,但我也有一个动画我想在按下按钮后播放。按钮启动那个动画,但是你看不到动画,因为场景切换太快了。

我尝试过使用协程和计时器,但我不具备如何完全实现它们的技术知识。

如果可能的话,我更愿意使用协程。 我的代码是:

    public void LoadNextScene()
    {
        int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
        SceneManager.LoadScene(currentSceneIndex + 1);
    }

    public void LoadMenuScene()
    {
        SceneManager.LoadScene(0);
    }
}

我想要按下按钮,然后播放动画,最后切换场景。您能否推荐所需的代码更改来实现我的愿望?

有几种不同的方法可以完成您所描述的事情。三个最受欢迎的事件是 Co-routines、调用和动画事件。

最简单的是调用,这里是您在调用中实现的代码示例。只需调用 'CallLoadNextScene'.

public void CallLoadNextScene()
{
    Invoke("LoadNextScene",yourDelay);
}

public void LoadNextScene()
{
    int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
    SceneManager.LoadScene(currentSceneIndex + 1);
}

public void CallLoadMenu(int id)
{
    Invoke("LoadMenuScene",yourDelay);
}

public void LoadMenuScene()
{
    SceneManager.LoadScene(0);
}

动画事件可能是最 "professional" 的方式,因为这样您就可以更好地委派责任。 Here 是对 Unity 网站的 link。

使用 Co-Routines 的解决方案看起来很像 invoke,但由于您不需要很多高级功能,因此 Invoke 更快且更易于使用。

祝你的项目好运! :)