c# - 如何延迟 Unity 中切换场景的脚本?

标签 c# unity-game-engine animation delay

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

我尝试过使用协程和计时器,但我不知道如何完全实现它们。

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

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

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

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

最佳答案

有几种不同的方法可以实现您所描述的操作。最流行的三种是协同例程、调用和动画事件。

最简单的是调用,下面是在调用中实现的代码示例。只需调用“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 网站的链接。

使用协同例程的解决方案看起来很像调用,但由于您不需要很多高级功能,因此调用更快且更易于使用。

祝您的项目顺利! :)

关于c# - 如何延迟 Unity 中切换场景的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56744313/

相关文章:

c# - 实现接口(interface)

c# - WebRequest 使用 Mozilla Firefox

c# - 在 .Net 4.0 中,DirectorySearch 能否以允许我翻页的方式返回 LDAP 结果?

java - WebSocket 服务器 (Java) 无法读取但发送到 C# (Unity) 客户端

swift - CAShapeLayer 动画不会触发 animationDidStop

javascript - 更改表格宽度动画

c# - 在 FTP 服务器上创建目录

javascript - 4 个配备 Unity3D 的 Wii Remote

unity-game-engine - Unity 中的区域学习

iphone - 结合UIView动画 block 和OpenGL ES渲染