使用协程:
IEnumerator WaitAttackAnimationStop(string animation_name)
{
yield return null;
if (_animationStateInfo.IsName(animation_name) && (_animationStateInfo.normalizedTime >= 1.0f))
{
_animator.SetInteger("State", 0);
_playerState = PlayerState.isIdling;
_isAttacking = false;
}
else
{
StartCoroutine(WaitAttackAnimationStop(animation_name));
}
}
类似于递归的效果,当当前正在播放的动画是我们不想要提前停止的动画,并且播放的进度没有满足预期(1代表播放结束),则我们递归地去调用这个协程,直到整个动画播放完毕,再递归地推出协程。