Unity的学习笔记(UGUI文本逐个字输出)

匿名 (未验证) 提交于 2019-12-02 23:43:01

之前在网上找过各种的逐个输出字,我可能理解能力不好,照着代码复制没有能使用成功,于是自己研究了很多网上说的思路,各种改良出了一个能用的,写完自己测试,觉得还真好用,于是记录下来

用法:将用代码组件挂上去,通过查找到代码组件,通过enabled来控制组件开关,每次更新文字时候,让组件进行一次关闭和开启,就能再次逐个显示

using UnityEngine; using System.Collections; using UnityEngine.UI;  public class WordOutPut : MonoBehaviour {      public float charsPerSecond = 0.05f;//打字时间间隔     private string words;//保存需要显示的文字      private bool isActive = false; //判断是否开始输出     private float timer;//计时器     private Text myText;//获取身上的test脚本     private int currentPos = 0;//当前打字位置      // Use this for initialization     private void OnDisable()     {         OnFinish();//当脚本在失活的时候,将数据进行重置     }   /// <summary>   /// 当脚本被激活的时候,将数据进行初始化  /// </summary>     private void OnEnable()     {         timer = 0;         isActive = true;         charsPerSecond = Mathf.Max(0.02f, charsPerSecond); //将最小的出字速度限制为0.02,也可以自行调整         myText = GetComponent<Text>();         words = myText.text;         myText.text = "";//获取Text的文本信息,保存到words中,然后动态更新文本显示内容,实现打字机的效果     }     void Start()     {     }      // Update is called once per frame     void Update()     {         OnStartWriter();         //Debug.Log (isActive);     } /// <summary>     /// 执行打字任务     /// </summary>     void OnStartWriter()     {          if (isActive)         {             timer += Time.deltaTime;             if (timer >= charsPerSecond)//判断计时器时间是否到达             {                 timer = 0;                 currentPos++;                   //这里其实还可以做一个改良,可以检测一个input用户输入,如果输入了,则让currentPos = words.Length,这样可以实现按下按键,马上就显示完毕                           myText.text = words.Substring(0, currentPos);//刷新文本显示内容                  if (currentPos >= words.Length)                 {                     OnFinish();                 }             }          }     }     /// <summary>     /// 结束打字,初始化数据     /// </summary>     void OnFinish()     {         isActive = false;         timer = 0;         currentPos = 0;         myText.text = words;     }     }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!