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;
}
}