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


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

    用法:将用代码组件挂上去,通过查找到代码组件,通过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; } }
  • 相关阅读:
    set-find
    set-equal_range
    set-equal_range
    set-erase
    php 抽象类 静态 单体设计模式
    Servlet 工作原理解析
    职场上一个人情商高的十种表现
    快速学习一门新技术入门
    php中14中排序方式的实现
    php中对Mysql数据库的访问操作
  • 原文地址:https://www.cnblogs.com/takanashi/p/11026876.html
Copyright © 2020-2023  润新知