Unity DOTween教程之 Text文字飘字效果的实现

2020-01-30  本文已影响0人  Bis_12e2

部分截取于度娘经验:https://jingyan.baidu.com/article/8ebacdf06017fc49f65cd507.html
基本思路:
1,DOTween插件(导入方法可参见下面百度经验)https://jingyan.baidu.com/article/2d5afd69325a7c85a2e28ee3.html

ac6eddc451da81cb87a5b9785e66d016082431c7.jpg
2,在场景中添加一个 Text,适当调整好大小
3,在工程中新建一个脚本 TextMovedByDOTween,双击脚本或者右建 Open C# Project 打开脚本进行编辑
以下是调整之后的代码(使浮动文字免于无限叠加向上飘到相机镜头之外)
ps,这个文字浮动有条件空格键触发,非自动模式。。。自动模式我还在研究中。。。
4,回到unity界面,在场景中添加 GameObject 空物体,把脚本挂载上去
5,把场景中的 Text 的颜色设置为透明
using UnityEngine;

using UnityEngine.UI;

using DG.Tweening;

public class TextMovedByDOTween : MonoBehaviour
{

    private Text text;

    // Use this for initialization

    void Start()
    {

        text = GameObject.Find("Text").GetComponent<Text>(); ;

    }

    // Update is called once per frame

    void Update()
    {

        if (Input.GetKeyDown(KeyCode.Space))
        {

            TextMoved(text);

        }

    }

    private void TextMoved(Graphic graphic)
    {

        //获得Text的rectTransform,和颜色,并设置颜色微透明

        RectTransform rect = graphic.rectTransform;

        Color color = graphic.color;

        graphic.color = new Color(color.r, color.g, color.b, 0);

        //设置一个DOTween队列

        Sequence textMoveSequence = DOTween.Sequence();

        //设置Text移动和透明度的变化值

        Tweener textMove01 = rect.DOMoveY(rect.position.y +50, 0.5f);

        Tweener textMove02 = rect.DOMoveY(rect.position.y + 100, 0.5f);
        Tweener textMove03= rect.DOMoveY(rect.position.y , 0.5f);


        Tweener textColor01 = graphic.DOColor(new Color(color.r, color.g, color.b, 1), 0.5f);

        Tweener textColor02 = graphic.DOColor(new Color(color.r, color.g, color.b, 0), 0.5f);
       
   
        //Append 追加一个队列,Join 添加一个队列

        //中间间隔一秒

        //Append 再追加一个队列,再Join 添加一个队列

        textMoveSequence.Append(textMove01);

        textMoveSequence.Join(textColor01);

        textMoveSequence.AppendInterval(0.6f);

        textMoveSequence.Append(textMove02);

        textMoveSequence.Join(textColor02);
        textMoveSequence.Append(textMove03);

        textMoveSequence.Join(textColor02);



    }

}

——————————————
更新一下,之前每按次空格键在漂浮动画还没执行完毕,文字会在该位置无限向上叠加执行动画,所以我改了一下之间间隔时间参数,加快了字体动作频率,缺点么,,,,,自行体会把,,,代码如下:

using UnityEngine;

using UnityEngine.UI;

using DG.Tweening;

public class TextMovedByDOTween : MonoBehaviour
{

    private Text text;

    // Use this for initialization

    void Start()
    {

        text = GameObject.Find("Text").GetComponent<Text>(); ;

    }

    // Update is called once per frame

    void Update()
    {

        if (Input.GetKeyDown(KeyCode.Space))
        {

            TextMoved(text);

        }

    }

    private void TextMoved(Graphic graphic)
    {

        //获得Text的rectTransform,和颜色,并设置颜色微透明

         RectTransform rect = graphic.rectTransform;
    
        Color color = graphic.color;

        graphic.color = new Color(color.r, color.g, color.b, 0);

        //设置一个DOTween队列

        Sequence textMoveSequence = DOTween.Sequence();

        //设置Text移动和透明度的变化值

        Tweener textMove00 = rect.DOMoveY(rect.position.y, 0.4f);

        Tweener textMove01 = rect.DOMoveY(rect.position.y +50, 0.2f);

        Tweener textMove02 = rect.DOMoveY(rect.position.y + 100, 0.2f);//0.2f是每次浮动频率的间隔时间 
        Tweener textMove03= rect.DOMoveY(rect.position.y , 0);


        Tweener textColor01 = graphic.DOColor(new Color(color.r, color.g, color.b, 1), 0.2f);

        Tweener textColor02 = graphic.DOColor(new Color(color.r, color.g, color.b, 0), 0.2f);


        //Append 追加一个队列,Join 添加一个队列

        //中间间隔0.4秒

        //Append 再追加一个队列,再Join 添加一个队列


        textMoveSequence.Append(textMove01);

        textMoveSequence.Join(textColor01);

        textMoveSequence.AppendInterval(0.2f);

        textMoveSequence.Append(textMove02);

       textMoveSequence.Join(textColor02);
       
        textMoveSequence.Append(textMove03);

       textMoveSequence.Join(textColor02);



    }

}

——————————————
补充!!!!!! 步骤2 创建的Text必须命名为“Text“,不然这个智障插件不仅会罢工还会把你的player搞成智障!!!!!
😊

上一篇 下一篇

猜你喜欢

热点阅读