AnimationDriverBase.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Sirenix.OdinInspector;
  2. using System;
  3. using System.Collections;
  4. namespace ChivaXR
  5. {
  6. public enum TimeType
  7. {
  8. time,
  9. aniFrame
  10. }
  11. [System.Serializable]
  12. /// <summary>
  13. /// 动画驱动工具组件基类
  14. /// </summary>
  15. public abstract class AnimationDriverBase : IAniState
  16. {
  17. [LabelText("执行序列")]
  18. [InfoBox("$Info")]
  19. public AnimationSequence animationSequence = AnimationSequence.synchronization;
  20. public string Info
  21. {
  22. get
  23. {
  24. if (animationSequence == AnimationSequence.synchronization)
  25. return "序列动画同步执行";
  26. else
  27. return "序列动画等待当前动画完成后执行";
  28. }
  29. }
  30. public abstract void InitState();
  31. public abstract void FinishedState();
  32. /// <summary>
  33. /// 动画被启动时执行一次
  34. /// </summary>
  35. public abstract void StartPlay(Action finishedCallBack = null);
  36. /// <summary>
  37. /// 为子类提供协程执行方法
  38. /// </summary>
  39. /// <param name="coroutine"></param>
  40. public void StartAniCoroutine(IEnumerator coroutine)
  41. {
  42. AnimationCoroutine.Instance.StartCoroutine(coroutine);
  43. }
  44. public virtual void OnDrawGizmos() { }
  45. public virtual string AnimationDescription() { return this.GetType().ToString() + "该类型动画描述暂无:"; }
  46. }
  47. }