animator 判断是否在播放动作

2015年02月06日 17:38 0 点赞 0 评论 更新于 2025-11-21 16:03

在 Unity3D 中,我们有时需要判断 Animator 是否正在播放某个特定的动作,下面将详细介绍其实现方法和具体操作步骤。

操作代码

在 Unity 里,我们可以通过以下代码来判断 Animator 是否正在播放指定的动画:

// 获取动画层,0 表示 Base Layer
AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0);

// 判断是否正在播放 walk 动画
if (stateInfo.IsName("Base Layer.walk"))
{
// 这里可以添加当正在播放 walk 动画时要执行的逻辑
}

代码解释

  1. 获取当前动画状态信息AnimatorStateInfo stateInfo = animator.GetCurrentAnimatorStateInfo(0); 这行代码的作用是获取 Animator 当前在第 0 层(即 Base Layer)的动画状态信息。GetCurrentAnimatorStateInfoAnimator 类的一个方法,它接受一个整数参数,表示动画层的索引,这里的 0 对应 Base Layer。

  2. 判断是否正在播放指定动画if (stateInfo.IsName("Base Layer.walk")) 这行代码用于判断当前动画状态是否为名为 "Base Layer.walk" 的动画。IsNameAnimatorStateInfo 类的一个方法,它接受一个字符串参数,该参数是动画状态的完整名称,包括所在的动画层名称。如果当前正在播放的动画状态名称与传入的名称匹配,IsName 方法将返回 true,否则返回 false

通过以上步骤,我们就可以在 Unity3D 中判断 Animator 是否正在播放指定的动画了。