TweenCanvasGroup.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using UnityEngine;
  2. namespace Core.UI.UTool.UITween
  3. {
  4. [System.Serializable]
  5. public class TweenCanvasGroup : TweenBasic
  6. {
  7. // public CanvasGroup CanvasGroup;
  8. public TweenLerpType TweenLerpType;
  9. public float StartAlpha;
  10. public float EndAlpha;
  11. public AnimationCurve startX=new AnimationCurve();
  12. public CanvasGroup GetCanvasGroup(Object CanvasGroup)
  13. {
  14. CanvasGroup canvasGroup = CanvasGroup as CanvasGroup;
  15. if (canvasGroup == null)
  16. {
  17. GameObject gameObject = CanvasGroup as GameObject;
  18. if (gameObject != null)
  19. {
  20. canvasGroup = gameObject.GetComponent<CanvasGroup>();
  21. }
  22. }
  23. return canvasGroup;
  24. }
  25. protected override void ProPlay(Object CanvasGroup, float allTime)
  26. {
  27. CanvasGroup canvasGroup = GetCanvasGroup(CanvasGroup);
  28. if (canvasGroup == null)
  29. {
  30. return;
  31. }
  32. float t = _addTime * allTime;
  33. if (t > 1)
  34. {
  35. t = 1;
  36. }
  37. float v = 0;
  38. switch (TweenLerpType)
  39. {
  40. case TweenLerpType.Default:
  41. v = Mathf.Lerp(StartAlpha, EndAlpha, t);
  42. break;
  43. case TweenLerpType.Curve:
  44. v = startX.Evaluate(t);
  45. break;
  46. }
  47. canvasGroup.alpha = v;
  48. }
  49. protected override void ProRest(Object CanvasGroup)
  50. {
  51. CanvasGroup canvasGroup = GetCanvasGroup(CanvasGroup);
  52. if (canvasGroup == null)
  53. {
  54. return;
  55. }
  56. switch (TweenLerpType)
  57. {
  58. case TweenLerpType.Default:
  59. canvasGroup.alpha = StartAlpha;
  60. break;
  61. case TweenLerpType.Curve:
  62. canvasGroup.alpha = startX.Evaluate(0);
  63. break;
  64. }
  65. }
  66. }
  67. }