在 Unity 中实现逐字显示的打字机效果,核心原理是对文本内容进行逐字拆分,并在一定的时间间隔内依次显示每个字符,以下从不同实现方式详细阐述其原理和实现步骤:
基于 UGUI Text 组件实现
原理概述
借助 Unity 的 UGUI(Unity GUI)系统中的 Text 组件,将完整的文本内容存储起来,然后通过一个计时器控制,按顺序逐个字符地添加到 Text 组件的显示文本中,从而模拟打字机逐字显示的效果。
具体步骤及代码示例
- 准备工作
在 Unity 场景中创建一个 Text 组件,用于显示文本内容。同时创建一个 C# 脚本,将其挂载到包含 Text 组件的游戏对象上。 代码实现如下:
```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
///
/// *Unity文字逐字显示实现*
///
public class Text_ : MonoBehaviour
{
public Text text;
private string str = "*Unity文字逐字显示实现*";private float waitTime = 0.2f; //字符间隔
private float speed = 0; //计时
#region 第一种方法实现
void Start()
{
//StartCoroutine("Numerator"); //开启协程
}
IEnumerator Numerator()
{
foreach (var item in str)
{
text.text += item;
yield return new WaitForSeconds(waitTime);
}
}
#endregion
#region 第二种方法实现
private void Update()
{
//speed += 0.2f; //直接加等于也可以 亲测可用
speed += Time.deltaTime * 10f; //感觉慢就乘上一个数
text.text = str.Substring(0, (int)speed + 1);
//Substring 逐个增加字符串的数量 vs 可按F12自行查看
}
#endregion
}
```