Unity Text文本要实现打字机,即一个个文字出来的效果,可以通过代码把text文本字符串拆成一个个字符然后添加到文本中。
具体实现:
新建一个控制脚本:TypewriteController.cs,并编写以下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TypewriteController : MonoBehaviour
{
public float typingSpeed = 0.1f; // 每个字符的显示间隔时间
private string fullText;
private string currentText = "";
public Text textComponent;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if(Input.GetKeyDown(KeyCode.A))
{
fullText = textComponent.text;
textComponent.text = "";
StartCoroutine(TypeText());
}
}
IEnumerator TypeText()
{
foreach (char c in fullText)
{
currentText += c;
textComponent.text = currentText;
yield return new WaitForSeconds(typingSpeed);
}
}
}
此控制脚本先把脚本文本获取后赋给一个字符串变量,然后置空文本内容,再通过协程把该字符串变量值拆分成一个个字符,然后使用协程来把一个个字符(即单个文字) 赋值给文本,这样就完成了打字机的效果。
新建一个场景,并在场景创建一个Text组件,把脚本拉到场景中,再把Text组件拖到脚本中的textComponent对象,运行场景,效果如下:
Unity Text文本实现打字机(一个一个出来)的效果