关于UGUI文本打字机效果的实现

打字机效果

闲来无事,更新小技巧点,本问主要是实现将Text文本逐字打印的效果,写作部分来源尘世喧嚣的博客,并进行了优化。

打字机的效果主要实现方式是利用Substring函数,简单介绍一下Substring。
substring是用来截取字符串的,根据参数的个数不同,方法含义也不同:

(1)substring(0,2)这个只含开头不含结尾,因此截取是截取两个字符,从第一个到第二个字符,不包含第三个。例如字符串“123456789”,使用了substring(0,2)就会截取“12”。

(2)substring(2)这个表示截掉前两个,得到后边的新字符串。例如字符串“123456789”,使用了substring(2)就会截取“3456789”。

下面是具体实现代码,只要将下列脚本挂载到你想要实现打字机效果的Text上就行了

using UnityEngine;
using UnityEngine.UI;

public class Typewriter : MonoBehaviour {

    public float PerSecond = 0.2f;//打字机打字时间间隔
    private string m_words;//保存Text中需要显示的文字
    private bool isActive = false;
    private float m_timer;//计时器
    private Text m_Text;     //显示文本的Text组件
    private int m_count = 0;//当前打字位置
    
    void Start()
    {
        Init();
    }

    /// <summary>
    /// 初始化参数
    /// </summary>
    private void Init()
    {
        m_timer = 0;
        isActive = true;
        PerSecond = Mathf.Max(0.2f, PerSecond);         //确保打字最小间隔时间为0.2秒
        m_Text = GetComponent<Text>();
        m_words = m_Text.text;
        m_Text.text = "";
    }

    void Update()
    {
        if (isActive)
        {
            StartWriter();
        }
    }

    /// <summary>
    /// 重复查看打字机效果的方法
    /// </summary>
    public void StartEffect()
    {
        isActive = true;
    }

    /// <summary>
    /// 执行打字任务
    /// </summary>
    void StartWriter()
    {
        if (m_timer+ Time.deltaTime >= PerSecond)
        {
            //计时
            m_timer = 0;
            m_count++;
            m_Text.text = m_words.Substring(0, m_count);//刷新文本显示内容
            if (m_count >= m_words.Length)
            {
                OverWriter();
            }
        }
    }

    /// <summary>
    /// 结束打字,初始化数据
    /// </summary>
    void OverWriter()
    {
        isActive = false;
        m_timer = 0;
        m_count = 0;
        m_Text.text = m_words;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值