unity中实现键盘打字的效果

UI中的设置如图所示:
这里写图片描述
其中Text脚本中的代码如下所示:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;

public class text:MonoBehaviour
{
    public float charsPerSecond=0.2f;//打字间隔的时间
    private string words;//保存需要显示的文字
    private bool isActive=false;
    private float timer;//计时器
    private Text myText;
    private int currentPos=0;
    private AudioSource keyAudio;

    private void Start()
    {
        timer=0f;
        isActive=true;
        charsPerSecond=Mathf.Max(0.2f,charsPerSecond);
        myText=GetComponent<Text>();
        //获取Text的文本信息,保存到words中,然后动态更新文本
        //显示的内容,实现打字机的效果
        myText.text="";
        keyAudio=GetComponent<AudioSource>();
    }

    private void Update()
    {
    OnStartWriter();
    }

    public void StartEffect()
    {
    isActive=true;
    }

    //执行打字任务
    private void OnStartWriter()
    {
    if(isActive)
    {
    timer+=Time.deltaTime;
    if(timer>=charsPerSecond)
        {
        timer=0f;
        currentPos++;
        //刷新文本显示内容
        myText.text=words.Substring(0,currentPos);
        keyAudio.Play();
        if(currentPos>=words.Length)
        {
        OnFinish();
        keyAudio.Stop();
        }
        }       
    }
    }

    //结束打字,初始化数据
    private void OnFinish()
    {
    isActive=false;
    timer=0;
    currentPos=0;
    myText.text=words;
    }
}

猜你喜欢

转载自blog.csdn.net/lly_117/article/details/78397825