赞
踩
1:路径动画,给一个路径,让物体沿着路径运动,Dotween实现
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; /// <summary> /// dotween队列动画 /// </summary> 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(() => {
});
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。