实现一个简易的打字机效果

451 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,[点击查看活动详情]

前言

在上一篇文章中,实现了游戏中常见的技能的冷却效果,本篇要介绍的打字机效果,在游戏中也颇为常见,例如:主角与任务NPC的对话系统,再比如推进游戏发展的剧情系统等。让我们开始吧!

image.png

准备工作

这里为了减少开发难度,笔者会使用到一个在游戏开发中常用的动画插件DOTween,为什么不用代码原生的方式来实现这个功能呢?主要是因为采用原生的方式,实现起来较为麻烦,而且运行效率不高,采用DOTween也是商业项目中一直在用的方式。 这里附上DOTween插件的下载地址,它有两个版本,一个是免费版,还有一个是收费的Pro版本,不过如果不是很有必要的话,免费版就够用了。

assetstore.unity.com/packages/to…

image.png

实现步骤

  • 1、在Hierarchy右键新建一个Text,如果面板中不存在Canvas的话,系统自动创建一个canvas并作为Text组件的父物体。

image.png

  • 2、创建脚本DoTweenTypeWriter.cs拖拽赋值到上一步创建的Text组件上。

image.png

  • 3、使用IDE打开创建的TypeWriter脚本,添加如下代码:
//引入DOTween的命名空间
using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;

namespace TextWrite
{
    public class DoTweenTypeWriter:MonoBehaviour
    {
        //Text组件
        private Text mText;

        //要显示的内容
        private string mContent;
        
        //动画播放完毕需要经过多少秒
        private float mDuration = 10f;
        
        void Start()
        {
            mText = GetComponent<Text>();
            //重置文本内容
            mContent = mText.text;
            mText.text = "";
            PlayWords();
        }

        private void PlayWords()
        {
            //实现打字机效果的核心代码
            mText.DOText(mContent, mDuration);
        }
    }
}

最后

需要注意的是,游戏中一个剧情或对话系统,往往还掺杂着其他逻辑,例如与用户之间的交互,用户不同的点击,也会有剧情打断,或者关闭之类的情况需要处理。本篇只介绍了打字机的效果,它是可以作为其中的一部分应用到其中的。OK,本篇就到这里。