unity3d 黑屏时如何执行某些行?

efzxgjgh  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(137)

我有一个渐入(从透明变为黑色)的黑屏UI动画,还有一个渐出(从黑色变为透明)的黑屏UI动画。我正在尝试播放渐入动画(屏幕变为黑色),然后在屏幕仍然为黑色时执行一些代码行,然后播放渐出屏幕。
我尝试使用StartCoroutine(Text());来实现这一点,如下所示:

transitionAnim.Play("fade_in");
    StartCoroutine(Text());
    character.SetActive(false);
    Damagedcharacter.SetActive(true);
    transitionAnim.Play("fadeout");

 IEnumerator Text()  //  <-  its a standalone method
    {
        yield return new WaitForSeconds(1f);
    }

我想要这些行:

character.SetActive(false);
Damagedcharacter.SetActive(true);

在黑屏期间执行。但它们不是。发生的是它们先执行,然后黑屏淡入淡出。
我如何使黑屏停留一段时间,并在黑屏期间执行一些行,然后淡出?

eh57zj3b

eh57zj3b1#

Coroutine不会神奇地延迟它所启动的方法中的代码。
或者将您的行移动到IEnumerator的末尾,如

transitionAnim.Play("fade_in");
StartCoroutine(Text());

IEnumerator Text()
{
    yield return new WaitForSeconds(1f);

    character.SetActive(false);
    Damagedcharacter.SetActive(true);
    transitionAnim.Play("fadeout");
}

虽然我个人不会混合动画和协程,而是使用Animation Events,并有一个回调,当你褪色到黑色,从那里做的东西,然后触发褪色回来。

相关问题