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);