unity播放动画代码

以下是Unity中播放动画的代码示例:

播放动画片段

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 播放名为"Walk"的动画片段
animator.Play("Walk");

播放动画状态机

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 播放名为"Base Layer.Run"的动画状态机
animator.Play("Base Layer.Run");

播放动画片段并设置播放速度

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 播放名为"Walk"的动画片段,并设置播放速度为2倍
animator.Play("Walk", -1, 2f);

暂停动画播放

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 暂停动画播放
animator.speed = 0f;

恢复动画播放

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 恢复动画播放
animator.speed = 1f;

播放动画片段并在播放完成后执行回调函数

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 播放名为"Jump"的动画片段,并在播放完成后执行回调函数
animator.Play("Jump", -1, 0f);
StartCoroutine(WaitForAnimation(animator, "Jump", () =>
{
    Debug.Log("Animation finished!");
}));
// 等待动画播放完成
IEnumerator WaitForAnimation(Animator animator, string animationName, Action callback)
{
    while (animator.GetCurrentAnimatorStateInfo(0).IsName(animationName))
    {
        yield return null;
    }
    callback?.Invoke();
}

播放动画片段并设置循环次数

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 播放名为"Idle"的动画片段,并设置循环次数为3次
animator.Play("Idle", -1, 0f);
animator.SetFloat("LoopCount", 3f);

获取动画片段的长度

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 获取名为"Walk"的动画片段的长度
float animationLength = animator.runtimeAnimatorController.animationClips
    .FirstOrDefault(clip => clip.name == "Walk")?.length ?? 0f;

获取当前动画片段的播放进度

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 获取当前动画片段的播放进度
float animationProgress = animator.GetCurrentAnimatorStateInfo(0).normalizedTime % 1f;

设置动画片段的播放速度

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 设置名为"Walk"的动画片段的播放速度为2倍
animator.SetFloat("WalkSpeed", 2f);

暂停动画片段的播放

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 暂停名为"Walk"的动画片段的播放
animator.SetFloat("WalkSpeed", 0f);

恢复动画片段的播放

// 获取动画组件
Animator animator = GetComponent<Animator>();
// 恢复名为"Walk"的动画片段的播放
animator.SetFloat("WalkSpeed", 1f);