TweenAudio.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using System;
  2. using UnityEngine;
  3. using System.Collections;
  4. public class TweenAudio : Tween
  5. {
  6. #region 变量
  7. protected float Delta;
  8. protected float Origin;
  9. protected float Destination;
  10. protected AudioSource Target;
  11. protected CurveFunctionF Func;
  12. #endregion
  13. public TweenAudio(AudioSource target, float origin, float destination, float duration, bool originActive, bool destActive, Curve curve)
  14. {
  15. Target = target;
  16. IsForward = false;
  17. IsBackward = false;
  18. Duration = duration;
  19. Delta = destination - origin;
  20. Origin = origin;
  21. Destination = destination;
  22. OnForwardStart += () =>
  23. {
  24. };
  25. OnForwardFinish += () =>
  26. {
  27. };
  28. OnBackwardStart += () =>
  29. {
  30. };
  31. OnBackwardFinish += () =>
  32. {
  33. };
  34. Func = ManaAnim.FunctionDicF[curve];
  35. }
  36. public override void StartForward()
  37. {
  38. base.StartForward();
  39. if (IsBackward)
  40. {
  41. Timer = Duration - Timer;
  42. }
  43. }
  44. public override void StartBackward()
  45. {
  46. base.StartBackward();
  47. if (IsForward)
  48. {
  49. Timer = Duration - Timer;
  50. }
  51. }
  52. public override bool DoForward()
  53. {
  54. Timer += Time.fixedDeltaTime;
  55. if (Timer > Duration)
  56. {
  57. Target.volume = Destination;
  58. Timer = 0;
  59. IsForward = false;
  60. OnForwardFinish.Invoke();
  61. ManaAnim.TweenForList.Remove(this);
  62. return true;
  63. }
  64. else
  65. {
  66. Target.volume = Func(Timer, Duration, Origin, Delta);
  67. return false;
  68. }
  69. }
  70. public override bool DoBackward()
  71. {
  72. Timer += Time.fixedDeltaTime;
  73. if (Timer > Duration)
  74. {
  75. Target.volume = Origin;
  76. Timer = 0;
  77. IsBackward = false;
  78. OnBackwardFinish.Invoke();
  79. ManaAnim.TweenBacList.Remove(this);
  80. return true;
  81. }
  82. else
  83. {
  84. Target.volume = Func(Timer, Duration, Destination, -Delta);
  85. return false;
  86. }
  87. }
  88. }