播放动画 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);
}
}
我正在尝试播放我的动画师的动画 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);
}
}