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

时间:2019-06-24 21:44:15

标签: c# unity3d animation delay

我有一个脚本,该脚本已连接到Unity中的一个按钮,可以切换场景,但是我还有一个动画,我想在按下按钮后播放该动画。该按钮将启动该动画,但是您无法看到该动画,因为场景切换太快。

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

有几种不同的方法可以完成您描述的事情。最受欢迎的三种是协同例程,调用和动画事件。

最简单的是调用,这是在调用中实现的代码示例。只需调用“ 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);
}

动画事件可能是最“专业”的方式,因为那样您就可以更好地分配责任。 Here是这些网站上Unity网站的链接。

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

最幸运的项目! :)