Dotween动画有关记录

1:路径动画,给一个路径,让物体沿着路径运动,Dotween实现
Dotween动画有关记录_第1张图片

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using System.Linq;
public class Dotween_demo : MonoBehaviour
{
    public Transform[] pos;
    public Transform move;
    void Start()
    {
        //使用select需要引入命名空间using System.Linq;
        var poss = pos.Select(u => u.position).ToArray();
        move.DOPath(poss, 7f, PathType.CatmullRom, PathMode.Full3D).SetEase(Ease.Linear).SetOptions(true).SetLookAt(0).SetLoops(-1,LoopType.Restart);
    }

}

有关参数解释:
PathType.CatmullRom(路径设置成曲线的)
PathType.Linear(路径设置成直线的)

(移动物体的lookat限制)
PathMode.Full3D
PathMode.Ignore

SetOptions(true)(是否闭合路径)

2: UIText的动画

void fun2()
    {
    //在5秒内显示完“abcdefghijklmn”,Text的播放动画
        text.DOText("abcdefghijklmn", 5f);
    }

3:动画队列的执行情况
使用dotween的动画队列执行动画,就是在一个时间内执行很多动画,按照顺序将这些动画加入到动画队列中(有些动画同一时间执行,有些动画是上一个动画执行完毕后执行)

同一时间执行两个动画,有insert和join方法,两者的区别在脚本中有写到

public Transform moveA;
    public Transform moveB;
    /// 
    /// dotween队列动画
    /// 
   void fun3()
    {
        //A--》x移动60---2秒
        //等待1秒
        //A-->x移动到0,同时Bx移动-60----1秒
        //B-->x移动到0,1秒
        //新建一个队列
        Sequence sq = DOTween.Sequence();
        //A移动
        sq.Append(moveA.DOLocalMoveX(60, 2f));
        //等待1秒
        sq.AppendInterval(1f);
        //AB同时移动
        sq.Append(moveA.DOLocalMoveX(0, 1f));
        sq.Join(moveB.DOLocalMoveX(-60, 1f));
        //B移动
        sq.Append(moveB.DOLocalMoveX(0, 1f));
    }
    void fun4()
    {
        //A--》x移动60---2秒
        //等待1秒
        //A-->x移动到0,同时Bx移动-60----1秒
        //B-->x移动到0,1秒
        //新建一个队列
        Sequence sq = DOTween.Sequence();
        //A移动
        sq.Append(moveA.DOLocalMoveX(60, 2f));
        //等待1秒
        sq.AppendInterval(1f);
        //AB同时移动
        sq.Append(moveA.DOLocalMoveX(0, 1f));
        //insert方法,整个队列插入在3秒以后开始执行
        sq.Insert(3,moveB.DOLocalMoveX(-60, 1f));
        //B移动
        sq.Append(moveB.DOLocalMoveX(0, 1f));
    }

4:队列加入回调方法,两种方法,个人感觉AppendCallback比较好用一点

  //队列加入回调方法,两种方法,个人感觉AppendCallback比较好用一点
    void fun5()
    {
        Sequence sq = DOTween.Sequence();
        sq.AppendInterval(1f);
        sq.AppendCallback(() => {
            print("第一种方法,appendCallback,在上一个动画执行完毕后执行这个");
        });
        sq.InsertCallback(1f, () => {
            print("第二种方法:在整个队列执行到1f时,执行这个");
        });
    }

5:预添加方法 :Prepend

  //简单使用 prepend,((prepend和Append不同之处就是,append从前往后执行,prepend是从后往前执行
    void fun6()
    {
        Sequence sq = DOTween.Sequence();
        sq.Prepend(this.transform.DOScale(1, 0.2f));
        sq.PrependInterval(1f);
        sq.PrependCallback(() => {

        });
    }

你可能感兴趣的:(unity小知识)