TweenScale.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. using UnityEngine;
  2. using System;
  3. using System.Collections;
  4. public class TweenScale : TweenRoot
  5. {
  6. #region 变量
  7. public override bool InOrigin
  8. {
  9. get
  10. {
  11. if (Target.localScale.Equal(Origin))
  12. {
  13. InOrigin_ = true;
  14. }
  15. else
  16. {
  17. InOrigin_ = false;
  18. }
  19. return InOrigin_;
  20. }
  21. set
  22. {
  23. InOrigin_ = value;
  24. InPause = false;
  25. InForward = false;
  26. InBackward = false;
  27. if (InOrigin_)
  28. {
  29. Target.localScale = Origin;
  30. BackwardFinish();
  31. }
  32. }
  33. }
  34. public override bool InDestination
  35. {
  36. get
  37. {
  38. if (Target.localScale.Equal(Destination))
  39. {
  40. InDestination_ = true;
  41. }
  42. else
  43. {
  44. InDestination_ = false;
  45. }
  46. return InDestination_;
  47. }
  48. set
  49. {
  50. InDestination_ = value;
  51. InPause = false;
  52. InForward = false;
  53. InBackward = false;
  54. if (InDestination_)
  55. {
  56. Target.localScale = Destination;
  57. ForwardFinish();
  58. }
  59. }
  60. }
  61. public Vector3 Delta;
  62. public Vector3 Origin;
  63. public Vector3 Destination;
  64. public Transform Target;
  65. public CurveFunctionV Func;
  66. #endregion
  67. public TweenScale(Transform target, Vector3 origin, Vector3 destination, float duration, bool originActive, bool destActive, Curve curve,bool cg = false) : base(cg, curve, target)
  68. {
  69. CanvasGroup = target.GetComponent<CanvasGroup>();
  70. Func = ManaAnim.CurveFuncDicV[curve];
  71. Target = target;
  72. InForward = false;
  73. InBackward = false;
  74. Delta = destination - origin;
  75. Origin = origin;
  76. Duration = duration;
  77. DestActive = destActive;
  78. Destination = destination;
  79. OriginActive = originActive;
  80. }
  81. public override bool StartForward()
  82. {
  83. if (base.StartForward())
  84. {
  85. return true;
  86. }
  87. if (InBackward)
  88. {
  89. InBackward = false;
  90. Timer = ManaAnim.GetTimerVec(Target.localScale, Duration, Origin, Delta, Curve);
  91. }
  92. return false;
  93. }
  94. public override bool StartBackward()
  95. {
  96. if (base.StartBackward())
  97. {
  98. return true;
  99. }
  100. if (InForward)
  101. {
  102. InForward = false;
  103. Timer = ManaAnim.GetTimerVec(Target.localScale, Duration, Destination, -Delta, Curve);
  104. }
  105. return false;
  106. }
  107. public override bool DoForward()
  108. {
  109. if (Target == null)
  110. {
  111. Pause();
  112. return false;
  113. }
  114. Timer += Time.fixedDeltaTime;
  115. if (Timer > Duration)
  116. {
  117. InDestination = true;
  118. if (OnForwardFinish != null)
  119. {
  120. OnForwardFinish.Invoke();
  121. }
  122. SetLoop(EventType.ForwardFinish);
  123. return true;
  124. }
  125. else
  126. {
  127. Target.localScale = Func(Timer, Duration, Origin, Delta);
  128. return false;
  129. }
  130. }
  131. public override bool DoBackward()
  132. {
  133. if (Target == null)
  134. {
  135. Pause();
  136. return false;
  137. }
  138. Timer += Time.fixedDeltaTime;
  139. if (Timer > Duration)
  140. {
  141. InOrigin = true;
  142. if (OnBackwardFinish != null)
  143. {
  144. OnBackwardFinish.Invoke();
  145. }
  146. SetLoop(EventType.BackwardFinish);
  147. return true;
  148. }
  149. else
  150. {
  151. Target.localScale = Func(Timer, Duration, Destination, -Delta);
  152. return false;
  153. }
  154. }
  155. }