在一些游戏的UI设计中,很多时候他的其实文字的出现是像打字机一样,一个字一个字的出现
如果我记得没错的话在Dotween插件中有一个方法可以轻松实现这种效果
text.DOText("文本内容");
下面我主要自己通过代码来实现一下这个效果
实现过程
这个的实现主要靠string类中的Substring(startposiiton,endposition)方法来实现
这个方法的两个参数代表两个位置 截取l两个参数之间的字符串
例如
String test = "Hello World !";
String subTest1 = test.substring(0,3);
输出结果就是 Hel
我们靠时间和时间间隔的比较来实现提示UI的更新
public float charsPerSecond = 0.2f;//打字时间间隔
private string words;//保存需要显示的文字
private bool isActive = false;
private float timer;//计时器
private Text myText;
private int currentPos = 0;//当前打字位置
void Start()
{
timer = 0;
isActive = true;
charsPerSecond = Mathf.Max(0.2f, charsPerSecond);
myText = GetComponent<Text>();
words = myText.text;
myText.text = "";//获取Text的文本信息,保存到words中,然后动态更新文本显示内容,实现打字机的效果
}
void Update()
{
OnStartWriter();
}
public void StartEffect()
{
isActive = true;
}
/// 执行打字任务
void OnStartWriter()
{
if (isActive)
{
timer += Time.deltaTime;
if (timer >= charsPerSecond)
{//判断计时器时间是否到达
timer = 0;
currentPos++;
myText.text = words.Substring(0, currentPos);//刷新文本显示内容
if (currentPos >= words.Length)
{
OnFinish();
}
}
}
}
/// 结束打字,初始化数据
void OnFinish()
{
isActive = false;
timer = 0;
currentPos = 0;
myText.text = words;
}
就这样简单
如果你也是unity爱好者 欢迎关注我