DoTween使用(完整版)

下载DoTween

在Asset Store直接下载,分为付费和免费版本
这里讲解是付费完整版

对变量进行动画(正则表达式)

    public float myValue2 = 0;

    // Use this for initialization
    void Start () {

        //对变量做一个动画 (通过插值的方式去修改一个值的变化)
        DOTween.To(() => myValue2, x => myValue2 = x, 10, 2);

    }

这个myValue2可以是任何类型的变量,10和后面的2分别是需要运动到的值和运动到这个值需要的时间

下面我们用一个按钮来控制面板的移动,实现点击一次从屏幕外面进来,再点击一次让他出去

    public RectTransform panelTransform;

    private bool isIn = false;
    void Start() {
        //panelTransform.DOMove(new Vector3(0, 0, 0), 1);//让paneltransfrom从当前位置 动画到 0,0,0的位置 时间为1s (修改的世界坐标)
        Tweener tweener = panelTransform.DOLocalMove(new Vector3(0, 0, 0), 0.3f);//默认动画播放完成会被销毁
                                                                                 //Tweener对象保存这个动画的信息 每次调用do类型的方法都会创建一个tweener对象,这个对象是dotween来管理
        tweener.SetAutoKill(false);// 把autokill 自动销毁设置为false
        tweener.Pause();//暂停动画播放
    }

    public void OnClick() {
        if (isIn == false) {
            panelTransform.DOPlayForward();//前放
            isIn = true;
        }
        else {
            //让panel离开屏幕
            panelTransform.DOPlayBackwards();//倒放
            isIn = false;
        }

    }

这个需要注意,ui和3d物体不一样,他的移动是控制RectTransform,而且ui的坐标都是局部坐标,这里我们因为dotween每次都会自动销毁,对我们做返回不好,所以使用SetAutoKill(false)不时它销毁,但是如果放在update方法的话每次执行都会生成一个动画存放在tweener物体身上,因为不会自动销毁所以我们需要将它放在start里面生成,然后控制动画向前播放和向后播放就可以了。

改变物体大小

DOScale是设置大小的方法

transform.localScale = Vector3.zero;
transform.DOScale(1, 1f);

fromTween方法

    void Start () {
        transform.DOMoveX(5, 3).From();
        //默认是从当前位置运行到目标位置  加上From()方法以后表示从目标位置移动到当前位置


        transform.DOMoveX(5, 4).From(true);
    }

from方式就是和直接使用是反方向的,比如第一句代码不加from方法是想从当前位置运动到5的位置,时间三秒,加上之后就是从5运动到当前位置时间3秒,from方法里面有一个参数,默认为false就是直接从目标位置运动到当前位置,如果改为ture就是相对坐标,也就是从距离5的位置运动到目标位置,假如当前位置是1,就是从1+5也就是6的位置运动到1的位置。

设置动画曲线,也就是动画运动的轨迹,以及动画事件

如图修改SetEase()这个方法里面的Ease即可

    void Start () {
        Tweener tweener = transform.DOLocalMoveX(0, 2);
        tweener.SetEase(Ease.OutBounce);//动画曲线
        tweener.OnComplete(OnTweenComplete);//动画结束事件
        tweener.SetLoops(2);//动画循环次数
    }


    void OnTweenComplete() {
        Debug.Log("动画播放完成了");
    }

这里写图片描述

常用的DoTween的生命周期函数

OnComplete()//绑定事件的函数
Onkill();//动画被销毁的时候调用
OnPlay();//动画播放的时候调用
OnPause();//动画暂停的时候调用
OnRewind();//动画被重置的时候
OnStart();//动画被播放的时候(只会调用一次)

文字框Test文本的轮播动画

这个方法会一个字一个字显示文本内容,如果文本有内容就会一个字一个字的替换文本内容

    private Text text;

    // Use this for initialization
    void Start () {
        text = this.GetComponent<Text>();
        text.DOText("接下来,我们进入第二篇章接下来,我们进入第二篇章", 4);
    }

屏幕震动效果

对相机进行操作


    void Start () {
    //参数分别是震动幅度和相机位移的向量,比如我不想让前后动,就把z轴设置为0
        transform.DOShakePosition(1,new Vector3(3,3,0));
    }

颜色和透明的动画

    private Text text;
    // Use this for initialization
    void Start () {
        text = GetComponent<Text>();

        //设置颜色
        //text.DOColor(Color.red, 2);
        //设置透明度
        text.DOFade(1, 3);
    }

猜你喜欢

转载自blog.csdn.net/qq_41056203/article/details/80935304
今日推荐