1
0

CanvasGroupMaster.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. /// 切换阶段专用工具
  9. /// </summary>
  10. public class CanvasGroupMaster : SingletonMaster<CanvasGroupMaster>
  11. {
  12. private const float ANIMTIME = 0.33f;
  13. public static void DoCanvasGroupFade(CanvasGroup cg, bool isFadeIn)
  14. {
  15. if (isFadeIn)
  16. {
  17. cg.DOFade(1, ANIMTIME).OnComplete(() =>
  18. {
  19. cg.interactable = true;
  20. cg.blocksRaycasts = true;
  21. });
  22. }
  23. else
  24. {
  25. cg.interactable = false;
  26. cg.DOFade(0, ANIMTIME).OnComplete(() =>
  27. {
  28. cg.blocksRaycasts = false;
  29. });
  30. }
  31. return;
  32. }
  33. public static void DoCanvasGroupFade(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. return;
  52. }
  53. public async static void DoCanvasGroupFade(CanvasGroup cg, bool isFadeIn, float time, float delayTime)
  54. {
  55. await Task.Delay((int)(1000 * delayTime));
  56. if (isFadeIn)
  57. {
  58. cg.DOFade(1, time).OnComplete(() =>
  59. {
  60. cg.interactable = true;
  61. cg.blocksRaycasts = true;
  62. });
  63. }
  64. else
  65. {
  66. cg.interactable = false;
  67. cg.DOFade(0, time).OnComplete(() =>
  68. {
  69. cg.blocksRaycasts = false;
  70. });
  71. }
  72. return;
  73. }
  74. }