DisplayManager.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using System.Collections;
  4. public class DisplayManager : MonoBehaviour {
  5. public Text displayText;
  6. public float displayTime;
  7. public float fadeTime;
  8. private IEnumerator fadeAlpha;
  9. private static DisplayManager displayManager;
  10. public static DisplayManager Instance()
  11. {
  12. if (!displayManager)
  13. {
  14. displayManager = FindObjectOfType(typeof(DisplayManager)) as DisplayManager;
  15. if (!displayManager)
  16. Debug.LogError("There needs to be one active DisplayManager script on a GameObject in your scene.");
  17. }
  18. return displayManager;
  19. }
  20. public void DisplayMessage(string message)
  21. {
  22. displayText.text = message;
  23. SetAlpha();
  24. }
  25. void SetAlpha()
  26. {
  27. if (fadeAlpha != null)
  28. {
  29. StopCoroutine(fadeAlpha);
  30. }
  31. fadeAlpha = FadeAlpha();
  32. StartCoroutine(fadeAlpha);
  33. }
  34. IEnumerator FadeAlpha()
  35. {
  36. Color resetColor = displayText.color;
  37. resetColor.a = 1;
  38. displayText.color = resetColor;
  39. yield return new WaitForSeconds(displayTime);
  40. while (displayText.color.a > 0)
  41. {
  42. Color displayColor = displayText.color;
  43. displayColor.a -= Time.deltaTime / fadeTime;
  44. displayText.color = displayColor;
  45. yield return null;
  46. }
  47. yield return null;
  48. }
  49. }