diff options
Diffstat (limited to 'Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextConsoleSimulator.cs')
| -rw-r--r-- | Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextConsoleSimulator.cs | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextConsoleSimulator.cs b/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextConsoleSimulator.cs new file mode 100644 index 0000000..883990e --- /dev/null +++ b/Pathfinding Visualizer/Assets/TextMesh Pro/Examples & Extras/Scripts/TextConsoleSimulator.cs @@ -0,0 +1,121 @@ +using UnityEngine; +using System.Collections; + + +namespace TMPro.Examples +{ + public class TextConsoleSimulator : MonoBehaviour + { + private TMP_Text m_TextComponent; + private bool hasTextChanged; + + void Awake() + { + m_TextComponent = gameObject.GetComponent<TMP_Text>(); + } + + + void Start() + { + StartCoroutine(RevealCharacters(m_TextComponent)); + //StartCoroutine(RevealWords(m_TextComponent)); + } + + + void OnEnable() + { + // Subscribe to event fired when text object has been regenerated. + TMPro_EventManager.TEXT_CHANGED_EVENT.Add(ON_TEXT_CHANGED); + } + + void OnDisable() + { + TMPro_EventManager.TEXT_CHANGED_EVENT.Remove(ON_TEXT_CHANGED); + } + + + // Event received when the text object has changed. + void ON_TEXT_CHANGED(Object obj) + { + hasTextChanged = true; + } + + + /// <summary> + /// Method revealing the text one character at a time. + /// </summary> + /// <returns></returns> + IEnumerator RevealCharacters(TMP_Text textComponent) + { + textComponent.ForceMeshUpdate(); + + TMP_TextInfo textInfo = textComponent.textInfo; + + int totalVisibleCharacters = textInfo.characterCount; // Get # of Visible Character in text object + int visibleCount = 0; + + while (true) + { + if (hasTextChanged) + { + totalVisibleCharacters = textInfo.characterCount; // Update visible character count. + hasTextChanged = false; + } + + if (visibleCount > totalVisibleCharacters) + { + yield return new WaitForSeconds(1.0f); + visibleCount = 0; + } + + textComponent.maxVisibleCharacters = visibleCount; // How many characters should TextMeshPro display? + + visibleCount += 1; + + yield return null; + } + } + + + /// <summary> + /// Method revealing the text one word at a time. + /// </summary> + /// <returns></returns> + IEnumerator RevealWords(TMP_Text textComponent) + { + textComponent.ForceMeshUpdate(); + + int totalWordCount = textComponent.textInfo.wordCount; + int totalVisibleCharacters = textComponent.textInfo.characterCount; // Get # of Visible Character in text object + int counter = 0; + int currentWord = 0; + int visibleCount = 0; + + while (true) + { + currentWord = counter % (totalWordCount + 1); + + // Get last character index for the current word. + if (currentWord == 0) // Display no words. + visibleCount = 0; + else if (currentWord < totalWordCount) // Display all other words with the exception of the last one. + visibleCount = textComponent.textInfo.wordInfo[currentWord - 1].lastCharacterIndex + 1; + else if (currentWord == totalWordCount) // Display last word and all remaining characters. + visibleCount = totalVisibleCharacters; + + textComponent.maxVisibleCharacters = visibleCount; // How many characters should TextMeshPro display? + + // Once the last character has been revealed, wait 1.0 second and start over. + if (visibleCount >= totalVisibleCharacters) + { + yield return new WaitForSeconds(1.0f); + } + + counter += 1; + + yield return new WaitForSeconds(0.1f); + } + } + + } +}
\ No newline at end of file |
