首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从foreach循环调用动画

从foreach循环调用动画
EN

Stack Overflow用户
提问于 2018-01-30 19:21:04
回答 1查看 363关注 0票数 0

我正在制作一个游戏,当一个特定的函数被调用时,它会给场景添加一个随机数或随机事件。我试图动画一个文本框,告诉每个效果是一个接一个。我有每一个效果添加一个文本字符串到一个列表,并使用一个foreach循环来更改文本框中的文本,然后设置一个动画触发器来使该框在屏幕上移动。我不能让循环等待直到动画完成,只有最后的效果文本是动画。

代码语言:javascript
运行
复制
public class UIAnimation : MonoBehaviour {

    public Animator animator;
    public Text NBtext;
    public GameObject NBEffect;

    public void NiceBowlingEffects(List<string> Effects)
    {
        foreach (var Effect in Effects)
        {
            NBtext.text = Effect;
            print(Effect);
            StartCoroutine(Animate());
        }
    }

    private IEnumerator Animate()
    {
        animator.SetTrigger("SlideText");
        yield return new WaitForSeconds(.75f); //animation is .7 seconds
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-30 19:35:41

这是因为一个协同线的作用就像一个分离的线程。所以你基本上是以正常的速度循环你的f循环,几乎在同一时间启动所有的协同线,因此在几乎同一时间设置所有的动画触发器。您需要做的是在循环本身中放置延迟。

代码语言:javascript
运行
复制
public void NiceBowlingEffects(List<string> Effects)
{
    StartCoroutine(Animate(Effects));
}

private IEnumerator Animate(Effects)
{
    foreach (var Effect in Effects)
    {
        NBtext.text = Effect;
        print(Effect);
        animator.SetTrigger("SlideText");
        yield return new WaitForSeconds(.75f); //animation is .7 seconds
    }
}

或者,您可以将NiceBowlingEffects本身作为协同线,并将其简化一些。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48529010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档