我如何让团结等到我的动画完成

How do i get unity to wait until my animation is done

我正在做一个统一项目,我也想在带有淡入淡出动画的场景之间切换。 动画已完成,我可以访问它们,但我正在使用教程中的 yield 和 Ienumerator 函数,但我无法让它工作。

//from my animation script
public IEnumerator fadeIn()
{
    isFading = true;
    animator.SetTrigger("FadeIn");
    while (isFading)
    {
        yield return new WaitForSeconds(3f);
    }
}

// from my main menu script.
public void btnPlay()
{
    StartCoroutine(fadeIn());
    Debug.Log("AfterIn");
    SceneManager.LoadScene("playOptions");
    StartCoroutine(fadeOut());
    Debug.Log("AfterOut");
}

IEnumerator fadeIn()
{
    yield return StartCoroutine(animatorscript.fadeIn());
}
IEnumerator fadeOut()
{
    yield return StartCoroutine(animatorscript.fadeOut());
}

我更新了我的问题。但是当我 运行 它时,我看不到动画。它会直接转到下一个场景并直接调试消息。

当你想启动协程时,你需要像这样调用它 StartCoroutine(fadeIn) 就像你正在做的那样 yield return StartCoroutine(animatorscript.fadeIn()).

所以你需要追加

public void btnPlay()
{
    StartCoroutine(fadeIn);
    SceneManager.LoadScene("playOptions");
    StartCoroutine(fadeOut);
}

有关 StartCoroutine

的更多信息,请参见 here

更新:关于您更新的问题,我假设您希望等到淡入淡出完成加载场景。

像这样的东西就可以了;

public void btnPlay()
{
    StartCoroutine(SceneFadeAndLoad);
}

IEnumerator SceneFadeAndLoad()
{
    yield return StartCoroutine(fadeIn);
    SceneManager.LoadScene("playOptions");
    yield return StartCoroutine(fadeOut);
}