Health/Assets/_VoiceAssistant/Plugins/com.richframe.frame/Runtime/Util/CustomAnimation/CustomAnimation.cs

92 lines
1.7 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 自定义动画
/// </summary>
public abstract class CustomAnimation : MonoBehaviour
{
public bool playOnStart;
public float playDelay;
public float duration;
public bool loop;
public AnimationCurve animationCurve;
public bool animating
{
get
{
return _enableAnim;
}
}
public float timer;
protected bool _enableAnim = false;
protected virtual void Update()
{
if (_enableAnim)
{
if (timer < duration)
{
UpdateAnimation(timer / duration);
timer += Time.deltaTime;
}
else
{
timer = 0;
if (!loop)
{
_enableAnim = false;
}
}
}
}
public virtual void StartAnimation()
{
ResetAnim();
if (playDelay > 0)
{
Invoke("EnableAnim", playDelay);
}
else
{
EnableAnim();
}
}
public virtual void StopAnimation()
{
ResetAnim();
}
protected virtual void ResetAnim()
{
timer = 0;
_enableAnim = false;
UpdateAnimation(0);
CancelInvoke("EnableAnim");
}
protected void EnableAnim()
{
_enableAnim = true;
}
protected virtual void OnEnable()
{
if (playOnStart)
{
StartAnimation();
}
}
protected virtual void OnDisable()
{
ResetAnim();
}
protected abstract void UpdateAnimation(float v);
}