DisplayManager.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. if (!displayManager) {
  12. displayManager = FindObjectOfType(typeof(DisplayManager)) as DisplayManager;
  13. if (!displayManager)
  14. Debug.LogError("There needs to be one active DisplayManager script on a GameObject in your scene.");
  15. }
  16. return displayManager;
  17. }
  18. public void DisplayMessage(string message) {
  19. displayText.text = message;
  20. SetAlpha();
  21. }
  22. void SetAlpha() {
  23. if (fadeAlpha != null) {
  24. StopCoroutine(fadeAlpha);
  25. }
  26. fadeAlpha = FadeAlpha();
  27. StartCoroutine(fadeAlpha);
  28. }
  29. IEnumerator FadeAlpha() {
  30. Color resetColor = displayText.color;
  31. resetColor.a = 1;
  32. displayText.color = resetColor;
  33. yield return new WaitForSeconds(displayTime);
  34. while (displayText.color.a > 0) {
  35. Color displayColor = displayText.color;
  36. displayColor.a -= Time.deltaTime / fadeTime;
  37. displayText.color = displayColor;
  38. yield return null;
  39. }
  40. yield return null;
  41. }
  42. }