TextGameScreenCenter.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using UnityEngine.UI;
  6. using DG.Tweening;
  7. namespace DuckHunter
  8. {
  9. /// <summary>
  10. /// 游戏屏幕中心的提示
  11. /// </summary>
  12. public class TextGameScreenCenter : MonoBehaviour
  13. {
  14. private Text _mainText;
  15. private TextAutoLanguage2 _mainTextAutoLanguage2;
  16. private Sequence _mainSequence;
  17. public static TextGameScreenCenter Instance;
  18. void Awake()
  19. {
  20. Instance = this;
  21. _mainText = GetComponent<Text>();
  22. _mainTextAutoLanguage2 = GetComponent<TextAutoLanguage2>();
  23. }
  24. void OnDestroy()
  25. {
  26. if (Instance == this) Instance = null;
  27. }
  28. public enum TextName
  29. {
  30. GAME_START,
  31. GAME_START_HIDE,
  32. GAME_START_FADEOUT,
  33. ROUND_X,
  34. SUPER_ARCHER,
  35. GAME_OVER,
  36. GAME_COMPLETED,
  37. FLY_AWAY,
  38. }
  39. public void ShowText(TextName textName, object[] args = null, Action onComplete = null)
  40. {
  41. if (args == null) args = new object[] { };
  42. _mainTextAutoLanguage2.textFormatArgs = args;
  43. if (_mainSequence != null)
  44. {
  45. _mainSequence.Kill();
  46. _mainSequence = null;
  47. }
  48. _mainText.alignment = TextAnchor.MiddleCenter;
  49. if (textName == TextName.GAME_START)
  50. {
  51. _mainTextAutoLanguage2.SetTextKey("SC-GAME_START");
  52. SetAlpha(_mainText, 1);
  53. onComplete?.Invoke();
  54. }
  55. else if (textName == TextName.GAME_START_HIDE)
  56. {
  57. _mainTextAutoLanguage2.SetTextKey("SC-GAME_START");
  58. SetAlpha(_mainText, 0);
  59. onComplete?.Invoke();
  60. }
  61. else if (textName == TextName.GAME_START_FADEOUT)
  62. {
  63. _mainTextAutoLanguage2.SetTextKey("SC-GAME_START");
  64. SetAlpha(_mainText, 1);
  65. _mainSequence = DOTween.Sequence();
  66. _mainSequence.Append(_mainText.DOFade(0, 0.5f));
  67. _mainSequence.AppendCallback(() => onComplete?.Invoke());
  68. }
  69. else if (textName == TextName.ROUND_X)
  70. {
  71. _mainTextAutoLanguage2.SetTextKey("SC-ROUND_X");
  72. SetAlpha(_mainText, 0);
  73. _mainSequence = DOTween.Sequence();
  74. _mainSequence.Append(_mainText.DOFade(1, 0.3f));
  75. _mainSequence.AppendInterval(2.4f);
  76. _mainSequence.Append(_mainText.DOFade(0, 0.3f));
  77. _mainSequence.AppendCallback(() => onComplete?.Invoke());
  78. }
  79. else if (textName == TextName.SUPER_ARCHER)
  80. {
  81. _mainText.alignment = TextAnchor.MiddleLeft;
  82. _mainTextAutoLanguage2.SetTextKey("SC-SUPER_ARCHER");
  83. SetAlpha(_mainText, 1);
  84. _mainSequence = DOTween.Sequence();
  85. _mainSequence.AppendInterval(2.5f);
  86. _mainSequence.Append(_mainText.DOFade(0, 0.5f));
  87. _mainSequence.AppendCallback(() => onComplete?.Invoke());
  88. }
  89. else if (textName == TextName.GAME_OVER)
  90. {
  91. _mainTextAutoLanguage2.SetTextKey("SC-GAME_OVER");
  92. SetAlpha(_mainText, 1);
  93. _mainSequence = DOTween.Sequence();
  94. _mainSequence.AppendInterval(3);
  95. _mainSequence.AppendCallback(() => onComplete?.Invoke());
  96. }
  97. else if (textName == TextName.GAME_COMPLETED)
  98. {
  99. // _mainTextAutoLanguage2.SetTextKey("SC-GAME_COMPLETED");
  100. _mainTextAutoLanguage2.SetTextKey(""); //游戏通关不显示文字
  101. SetAlpha(_mainText, 1);
  102. _mainSequence = DOTween.Sequence();
  103. _mainSequence.AppendInterval(3);
  104. _mainSequence.AppendCallback(() => onComplete?.Invoke());
  105. }
  106. else if (textName == TextName.FLY_AWAY)
  107. {
  108. _mainTextAutoLanguage2.SetTextKey("SC-FLY_AWAY");
  109. SetAlpha(_mainText, 1);
  110. _mainSequence = DOTween.Sequence();
  111. _mainSequence.AppendInterval(2);
  112. _mainSequence.Append(_mainText.DOFade(0, 0.5f));
  113. _mainSequence.AppendCallback(() => onComplete?.Invoke());
  114. }
  115. }
  116. private void SetAlpha(Text text, float value)
  117. {
  118. Color color = text.color;
  119. color.a = value;
  120. text.color = color;
  121. }
  122. }
  123. }