我如何让团结等到我的动画完成
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);
}
我正在做一个统一项目,我也想在带有淡入淡出动画的场景之间切换。 动画已完成,我可以访问它们,但我正在使用教程中的 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
更新:关于您更新的问题,我假设您希望等到淡入淡出完成加载场景。
像这样的东西就可以了;
public void btnPlay()
{
StartCoroutine(SceneFadeAndLoad);
}
IEnumerator SceneFadeAndLoad()
{
yield return StartCoroutine(fadeIn);
SceneManager.LoadScene("playOptions");
yield return StartCoroutine(fadeOut);
}