如何在Unity C#中等待动画完成[重复]

Posted

技术标签:

【中文标题】如何在Unity C#中等待动画完成[重复]【英文标题】:How to wait for an animation to finished in Unity C# [duplicate] 【发布时间】:2017-08-10 07:12:44 【问题描述】:

我想在设置触发器后等待动画剪辑完成。

private void Start()

    anim = GetComponent<Animator>();



private IEnumerator Die()

    // Play the animation for getting suck in
    anim.SetTrigger("Shrink")      

    // Wait for the current animation to finish
    while (!anim.IsInTransition(0))
    
        yield return null;
     

    // Move this object somewhere off the screen


动画播放,但它不会等待完成,然后在 while 循环之后继续执行代码。

这是我的动画组件:

【问题讨论】:

【参考方案1】:

您可以使用 Unity 的动画事件 (https://docs.unity3d.com/Manual/script-AnimationWindowEvent.html)。

它们是可以放置在动画时间轴中的标记,允许您指定将被调用的函数。

【讨论】:

链接已失效,截至 2021 年 10 月,此链接正在运行 docs.unity3d.com/Manual/script-AnimationWindowEvent.html @Felipe 谢谢,已修复 :)【参考方案2】:

等待动画完成的方法是使用动画完成所需的时间,您可以在查看检查器的动画中找到该时间,您只需在触发动画后等待该时间即可。

所以在你的情况下,它看起来像这样:

private IEnumerator Die()

    // Play the animation for getting suck in
    anim.SetTrigger("Shrink") 

    yield return new WaitForSeconds(animationTime);

    // Move this object somewhere off the screen


【讨论】:

以上是关于如何在Unity C#中等待动画完成[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Unity 2D c# - 如何保存最后一个动画位置

在Vue中使用GSAP完成动画(三)动画事件

如何在不重复Unity动画的情况下通过Animator提高动画播放速度

如何在 Vue 笑话测试中等待引导模式动画完成

如何在 Unity(C#,目前针对 iOS)中设置每周重复推送通知?

unity 3d 动画完成后如何让玩家停留在目标位置