我正在进行一个团结项目,我也希望在淡入和淡出动画的场景之间切换。 动画已经完成,我可以访问它们,但是我正在使用教程中的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());
}
我已经更新了我的问题。但是当我运行它时,我看不到动画。它直接指向下一个场景,并在彼此之后直接调试消息。
答案 0 :(得分:1)
当您想要开始使用Coroutine时,您需要像StartCoroutine(fadeIn)
一样调用它yield return StartCoroutine(animatorscript.fadeIn())
。
所以你需要追加
public void btnPlay()
{
StartCoroutine(fadeIn);
SceneManager.LoadScene("playOptions");
StartCoroutine(fadeOut);
}
有关StartCoroutine
更新:关于你更新的问题,我假设你希望等到fadein完成加载场景。
这样的事情可以解决问题;
public void btnPlay()
{
StartCoroutine(SceneFadeAndLoad);
}
IEnumerator SceneFadeAndLoad()
{
yield return StartCoroutine(fadeIn);
SceneManager.LoadScene("playOptions");
yield return StartCoroutine(fadeOut);
}