首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Animator时,如何等待动画制作完成?

使用Animator时,如何等待动画制作完成?
EN

Stack Overflow用户
提问于 2021-11-11 16:54:44
回答 2查看 95关注 0票数 1

这是一个初学者问题,应该可以从第一个google结果中找到,但我找不到它。

我有一个使用Animator播放动画的方法

代码语言:javascript
复制
IEnumerator popDownAnimation(string c)
{
    animator = GetComponent<Animator>();
    animator.Play("Pop Down Animation");
    yield return new WaitUntil(() => animator.GetCurrentAnimatorStateInfo(0).normalizedTime > 1 && !animator.IsInTransition(0));
    animator.Play("New State");
}

不记得从哪弄来的了,但yield return new WaitUntil(() => animator.GetCurrentAnimatorStateInfo(0).normalizedTime > 1 && !animator.IsInTransition(0));不工作了。它立即从"Pop Down Animation“跳到"New State",所以"Pop Down Animation”没有机会播放。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-12 03:52:10

尝尝这个

代码语言:javascript
复制
IEnumerator popDownAnimation(string c)
{
   animator = GetComponent<Animator>();
   animator.Play("Pop Down Animation");
   float animationLength = animator.GetCurrentAnimatorStateInfo(0).length;
   yield return new WaitForSecondsRealtime(animationLength);
   animator.Play("New State");
}

然而,就像@NotVeryGoodAtThis提到的那样,我不会在代码中这样做,除非你有一个特定的原因,为什么你不能使用动画事件或使用动画生成器中的参数在动画状态之间转换。使用Unity的Animator窗口设计动画并使用状态、参数和过渡将比通过代码更容易管理,特别是在动画制作人员变得更加复杂的情况下。

票数 1
EN

Stack Overflow用户

发布于 2021-11-11 18:08:28

我建议使用动画事件来做你需要做的任何事情。只需记住创建一个公共方法并将动画事件添加到动画的末尾即可。

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

https://stackoverflow.com/questions/69932054

复制
相关文章

相似问题

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