Fade.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. public class Fade : MonoBehaviour
  5. {
  6. [SerializeField]
  7. private float fadeTime = 0.5f;
  8. private Image image;
  9. private Color color;
  10. [SerializeField]
  11. private GameObject[] child;
  12. private void Awake()
  13. {
  14. image = GetComponent<Image>();
  15. color = image.color;
  16. }
  17. public IEnumerator FadeIn()
  18. {
  19. float t = 0;
  20. for (int i = 0; i < child.Length; i++)
  21. {
  22. child[i].SetActive(false);
  23. }
  24. while (t < fadeTime)
  25. {
  26. color.a = Mathf.Lerp(1.0f, 0.0f, t / fadeTime);
  27. image.color = color;
  28. t += Time.deltaTime;
  29. yield return null;
  30. }
  31. color.a = 0.0f;
  32. image.color = color;
  33. }
  34. public IEnumerator FadeOut()
  35. {
  36. float t = 0;
  37. while (t < fadeTime)
  38. {
  39. color.a = Mathf.Lerp(0.0f, 1.0f, t / fadeTime);
  40. image.color = color;
  41. t += Time.deltaTime;
  42. yield return null;
  43. }
  44. for (int i = 0; i < child.Length; i++)
  45. {
  46. child[i].SetActive(true);
  47. }
  48. color.a = 1.0f;
  49. image.color = color;
  50. }
  51. }