unity实现打字机效果

在一些游戏的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爱好者 欢迎关注我

发布了52 篇原创文章 · 获赞 47 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44302602/article/details/103912825
今日推荐