【问题标题】:How can I delay my script for switching scenes in Unity?如何延迟我的脚本以在 Unity 中切换场景?
【发布时间】:2019-06-24 21:44:15
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 使用协程。

标签: c# unity3d animation delay


【解决方案1】:

有几种不同的方式来做你所描述的事情。三个最流行的是协程、调用和动画事件。

最简单的方法是调用,这里是调用中实现的代码示例。只需调用“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'),不知道如何解决
  • invoke => 调用。
  • 我猜这是一个愚蠢的问题,但谢谢
猜你喜欢
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
相关资源
最近更新 更多