前言:打字机效果在大部分视觉小说类型游戏中很常见,也是一种特别的文字表现形式。本文就如何在Unity中实现打字机效果以及Text如何实现首行缩进展开介绍。
本篇文章使用的是Pico的开发环境,当然在其他开发环境下也能使用同样的方法实现。
目录
一、打字机效果
效果预览:
1.1 Hierarchy面板右击—XR—UI Canvas,新建画布并调整其位置以及缩放值,修改Canvas Scaler组件下的Dynamic Pixels Per Unit为2(不建议超过10)。若在PC环境下开发则直接在UI—Canvas中新建画布即可。
官方文档中对于Dynamic Pixels Per Unit的解释:
属性: 功能: Dynamic Pixels Per Unit 用于 UI 中动态创建的位图(如文本)的每单位像素量。 简单理解:将数值调高可以增加Text的清晰度
1.2 Canvas下右击—UI—Text,新建文本,将需要显示的文字输入Text组件中。如果要显示的文字太长,而Text的Width和Height不够大,文本会被截断,需要调整其数值才能使文本全部显示出来,也可以调整字号大小使文本全部显示。
1.3 编写脚本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //引用UnityEngine.UI命名空间,用于调用UI相关组件
public class TypeWriter : MonoBehaviour
{
public Text GetText; //公有变量,用于在编辑器中获取需要显示的文本
private string GetString; //用于存放需要显示的文本
private void Awake()
{
GetString = GetText.text; //将在编辑器中获取到的文本内容赋值给string类型变量存放
GetText.text = string.Empty; //清空文本框
StartCoroutine(Typing()); //启用协程
}
IEnumerator Typing()
{
for (int i = 0; i < GetString.Length; i++) //循环
{
GetText.text += GetString[i]; //逐个输出保存在GetString变量中的文字
yield return new WaitForSeconds(0.1f); //每输出一个字,等待0.1秒
}
}
}
1.4 将脚本挂载至Text上,并将Text拖拽至脚本下的GetText列即可。
二、首行缩进
Text不支持空格缩进,如果文本中遇到空格,会自动换行。
实现思路:在文本开头添加透明字符。
<color=#FFFFFF00>缩进</color>
如果需要在首行缩进下实现打字机效果,上述方法则不再适用。
修改代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; //引用UnityEngine.UI命名空间,用于调用UI相关组件
public class TypeWriter : MonoBehaviour
{
public Text GetText; //公有变量,用于在编辑器中获取需要显示的文本
private string GetString= "大家好,今天我们学习怎么实现打字机效果。"; //用于存放需要显示的文本
private void Awake()
{
StartCoroutine(Typing()); //启用协程
}
IEnumerator Typing()
{
for (int i = 0; i < GetString.Length; i++) //循环
{
GetText.text += GetString[i]; //逐个输出保存在GetString变量中的文字
yield return new WaitForSeconds(0.1f); //每输出一个字,等待0.1秒
}
}
}
Text组件内的文本需要手动清空,只需要保留两个透明字符。
运行效果: