TextLoader.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using QFramework;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. public class TextLoader : MonoBehaviour
  8. {
  9. /// <summary>
  10. /// 完整文本
  11. /// </summary>
  12. [SerializeField]
  13. private string m_fullText;
  14. /// <summary>
  15. /// 每秒加载的字符数
  16. /// </summary>
  17. [SerializeField]
  18. private float m_speedTime = 0.1f;
  19. /// <summary>
  20. /// 计时器
  21. /// </summary>
  22. private float m_Timer;
  23. /// <summary>
  24. /// 当前加载长度
  25. /// </summary>
  26. private int m_currentNumber = 0;
  27. private Text m_HintEffectTxt;
  28. // Start is called before the first frame update
  29. void Start()
  30. {
  31. m_HintEffectTxt = transform.GetComponent<Text>();
  32. }
  33. private void FixedUpdate()
  34. {
  35. if (m_currentNumber >= m_fullText.Length)
  36. {
  37. m_currentNumber = 0;
  38. m_HintEffectTxt.text = String.Empty;
  39. m_Timer = 0;
  40. }
  41. else
  42. {
  43. m_Timer += Time.deltaTime;
  44. if (m_Timer >= m_speedTime)
  45. {
  46. m_Timer = 0;
  47. m_currentNumber++;
  48. m_HintEffectTxt.text = m_fullText.Substring(0, m_currentNumber);
  49. }
  50. }
  51. }
  52. }