using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Events;
namespace MyFrameworkPure
{
///
/// 动画工具类
///
public class AnimationTool
{
///
/// 正向播放动画
///
///
///
///
///
public static TimeDelay PlayForward(Animation animation, string clipName = "", UnityAction onComplete = null)
{
if (string.IsNullOrEmpty(clipName))
{
clipName = animation.clip.name;
}
animation[clipName].speed = 1;
animation[clipName].normalizedTime = 0;
animation.Play(clipName);
return TimeDelay.Delay(animation[clipName].length, () =>
{
if (onComplete != null)
onComplete();
});
}
///
/// 倒播动画
///
///
///
///
///
public static TimeDelay PlayBack(Animation animation, string clipName = "", UnityAction onComplete = null)
{
if (string.IsNullOrEmpty(clipName))
{
clipName = animation.clip.name;
}
animation[clipName].speed = -1;
animation[clipName].normalizedTime = 1;
animation.Play(clipName);
return TimeDelay.Delay(animation[clipName].length, () =>
{
if (onComplete != null)
onComplete();
});
}
///
/// 重置动画到第一帧
///
///
///
public static void Reset(Animation animation, string clipName = "")
{
if (string.IsNullOrEmpty(clipName))
clipName = animation.clip.name;
animation.Play(clipName);
animation[clipName].time = 0;
animation.Sample();
animation.Stop();
}
///
/// 重置动画到最后一帧
///
///
///
public static void Complete(Animation animation, string clipName = "")
{
if (string.IsNullOrEmpty(clipName))
clipName = animation.clip.name;
animation[clipName].normalizedTime = 1;
}
///
/// 重置动画到最后一帧(Animator)
///
///
///
public static void Complete(Animator animator, string clipName)
{
//AnimationClip clip = animator.runtimeAnimatorController.animationClips.First(x => x.name == clipName);
animator.Play(clipName, 0, 1);
}
}
}