Bootstrap

Unity如何判断Animator当前播放的动画已经结束

        今天工作中遇到了一个问题,判断当前的动画什么时候播放完成,然后作出下一步动作,然后积累了下代码,发布了出来!

这里我使用的关键方法为:AnimatorStateInfo stateInfo;stateInfo.normalizedTime >= 1.0f 来表示动画的标准化时间已经达到或超过1.0,即动画的播放进度

具体内容如下:

      首先,示例为场景中有一个角色,自带有一个Animator,即myAnimator,并且有一个动画状态-Attack,我们要播放这个动画,当动画播放结束后打印一条信息

        代码如下

public class MyPanel : MonoBehaviour

[SerializeField]
private Button m_BeginAniBt;

[SerializeField]
private Animator myAnimator;

private bool m_CurState = false;

void Start()

{

        m_BeginAniBt.onClick.AddListener(OnBeginAni);

}

public void OnBeginAni()
 {

        myAnimator.Play("Attack");

        m_CurState = true;
 }

void Update()

{

        AnimatorStateInfo stateInfo = myAnimator.GetCurrentAnimatorStateInfo(0);

        if(m_CurState)
        {
            if (stateInfo.IsName("Base Layer.Attack"))
            {
               //判断当前是否播放超过1.0f,即播放完成

                if (stateInfo.normalizedTime >= 1.0f)
                {
                            m_CurState = false;

                             //Attack攻击动画完成

                            Debug.Log("Attack End");
                }
            }
        }

}

;