播放动画 5 次

Play animation 5 times

我正在尝试播放我的动画师的动画 5 次。也就是说,在每个动画结束后,它都必须再播放一次。我该怎么做?

public Animator anim;

void Start ()
       {
             StartCoroutine(PlayAnimInterval(5));
       }

      private IEnumerator PlayAnimInterval(int n)
      {
          while (n > 0)
          {
              anim.Play("wave", -1, 0F);
              --n;
              //yield return new WaitForSeconds(anim.GetCurrentAnimatorStateInfo(0).length); //Returns 1 which is wrong
          }
      }

使用IEnumerator中的for循环解决问题。还要确保正确输入层号。这里波态在第 0 层重复 5 次。

private IEnumerator PlayAnimInterval(int n)
{
    for (int i = 0; i < n; i++)
    {
        anim.Play("wave", 0, 1);
        yield return new WaitForSeconds(anim.GetCurrentAnimatorStateInfo(0).length);
    }
}

如何检测Animator Layer?

动画层是一个数组。通过在层部分添加每一层,它的索引也被添加。您可以在下面找到它的代码。


用行为重复状态信息

这个方法可以解决任意状态下的重复问题。只需创建如下所示的行为并添加重复次数。此方法也独立于图层工作。

public class Repeat : StateMachineBehaviour
{
    public int repeatTime;
    public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        if (repeatTime <= 0) return;
        
        repeatTime--;
        animator.Play(stateInfo.fullPathHash);
    }
}