using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; using NaughtyAttributes; public class TextController : MonoBehaviour { [SerializeField] private TMP_Text m_levelText; [SerializeField] private TextMeshProUGUI m_detailsText; [SerializeField] private TextMeshProUGUI m_timerText; [SerializeField] private TextMeshProUGUI m_goText; [SerializeField] private Variables.Reference m_freezePlayer; [SerializeField] private Image m_backGround; [SerializeField, BoxGroup("Settings")] private float LevelFadeTime = 2; [SerializeField, BoxGroup("Settings")] private float Details1 = 1; [SerializeField, BoxGroup("Settings")] private float Details2 = 0.1f; [SerializeField, BoxGroup("Settings")] private float Details3 = 0.8f; [SerializeField, BoxGroup("Settings")] private float Fadetime = 1; [SerializeField, BoxGroup("Settings")] private float gotime = 0.5f; private IEnumerator Start() { m_backGround.gameObject.SetActive(true); m_freezePlayer.Value = true; yield return StartCoroutine(LevelName(LevelFadeTime)); yield return StartCoroutine(DetailText(Details1, Details2, Details3)); yield return StartCoroutine(Fade(Fadetime)); yield return StartCoroutine(Go(gotime)); } private IEnumerator LevelName(float time) { m_levelText.gameObject.SetActive(true); float start = 0; float end = 1; float elaspedTime = 0; Color color = m_levelText.color; while (elaspedTime < time) { float alpha = Mathf.Sin(Mathf.PI * (elaspedTime / time)); color.a = alpha; m_levelText.color = color; yield return new WaitForEndOfFrame(); elaspedTime += Time.deltaTime; } color.a = 0; m_levelText.color = color; m_levelText.gameObject.SetActive(false); } private IEnumerator DetailText(float time,float time2, float time3) { m_detailsText.gameObject.SetActive(true); m_detailsText.text = "10\n"; yield return new WaitForSeconds(time); m_detailsText.text += "Seconds\n\n"; yield return new WaitForSeconds(time); foreach(char c in "Get to the Chest") { m_detailsText.text += c; yield return new WaitForSeconds(time2); } yield return new WaitForSeconds(time3); } private IEnumerator Fade(float time) { float elaspedTime = 0; Color textColor = m_detailsText.color; Color backgroundColor = m_backGround.color; m_timerText.gameObject.SetActive(true); while (elaspedTime < time) { textColor.a = 1-(elaspedTime/time); backgroundColor.a = 1-(elaspedTime/time); m_backGround.color = backgroundColor; m_detailsText.color = textColor; yield return new WaitForEndOfFrame(); elaspedTime+= Time.deltaTime; } textColor.a = 0; backgroundColor.a = 0; m_backGround.color = backgroundColor; m_detailsText.color = textColor; m_detailsText.gameObject.SetActive(false); m_backGround.gameObject.SetActive(false); } private IEnumerator Go(float time) { m_goText.gameObject.SetActive(true); yield return new WaitForSeconds(time); m_freezePlayer.Value = false; m_goText.gameObject.SetActive(false); } }