1
0

CanvasGroupMaster.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using ToneTuneToolkit.Common;
  4. using UnityEngine;
  5. using DG.Tweening;
  6. using System.Threading.Tasks;
  7. /// <summary>
  8. /// CanvasGroup工具
  9. /// </summary>
  10. public class CanvasGroupMaster : SingletonMaster<CanvasGroupMaster>
  11. {
  12. private const float ANIMTIME = 0.33f;
  13. // ==================================================
  14. public static void DoFade(CanvasGroup cg, bool isFadeIn)
  15. {
  16. if (isFadeIn)
  17. {
  18. cg.DOFade(1, ANIMTIME).OnComplete(() =>
  19. {
  20. cg.interactable = true;
  21. cg.blocksRaycasts = true;
  22. });
  23. }
  24. else
  25. {
  26. cg.interactable = false;
  27. cg.DOFade(0, ANIMTIME).OnComplete(() =>
  28. {
  29. cg.blocksRaycasts = false;
  30. });
  31. }
  32. }
  33. public static void DoFade(CanvasGroup cg, bool isFadeIn, float time)
  34. {
  35. if (isFadeIn)
  36. {
  37. cg.DOFade(1, time).OnComplete(() =>
  38. {
  39. cg.interactable = true;
  40. cg.blocksRaycasts = true;
  41. });
  42. }
  43. else
  44. {
  45. cg.interactable = false;
  46. cg.DOFade(0, time).OnComplete(() =>
  47. {
  48. cg.blocksRaycasts = false;
  49. });
  50. }
  51. }
  52. public async static void DoFade(CanvasGroup cg, bool isFadeIn, float time, float delayTime)
  53. {
  54. await Task.Delay((int)(1000 * delayTime));
  55. if (isFadeIn)
  56. {
  57. cg.DOFade(1, time).OnComplete(() =>
  58. {
  59. cg.interactable = true;
  60. cg.blocksRaycasts = true;
  61. });
  62. }
  63. else
  64. {
  65. cg.interactable = false;
  66. cg.DOFade(0, time).OnComplete(() =>
  67. {
  68. cg.blocksRaycasts = false;
  69. });
  70. }
  71. }
  72. }