DoTween常用方法
Tweener的设置
参数设值的两种方法:链式方法的调用
//引入命名空间
using DG.Tweening;
void Start(){
transform.DOMove(Vector3.one,1).SetLoops(-1,LoopType.Yoyo);
}
这里函数后面都可以.下去
1、SetLoops-循环 :
- 1参数:时长(无限为-1)
- 2参数类型:Yoyo(圆点到移动位置往复) ; Incremental(递增) ;Restart(原点-重新开始)
相同效果调用通过dotween参数的形式
通过dotween参数的形式
void Start(){
TweenParams tp = new TweenParams();
tp.SetLoops(-1,LoopType.Yoyo);
transform.DOMove(Vector3.one, 1).SetAs(tp); //用.SetAs(tp)去执行点前面的内容
}
2、设置参数:
- 用.SetAs(tp)去执行点前面的内容
transform.DOMove(Vector3.one, 1).SetAs(tp);
3、设置自动杀死动画
- 用.SetAutoKill()动画完成后会自动执行销毁
transform.DOMove(Vector3.one, 1).SetAs(tp).SetAutoKill();
4、from补间
- 用.From()目标值移动到圆点位置;
- 若原点与移动点相同,在不给From()参数值的情况下,不会移动
- 若From()有值,TRUE的话则 原点+移动点=目标值
- 若FALSE,则传入值 = 目标值
transform.DOMove(Vector3.one, 1).From();
5、设置动画延时
- 延迟时间方式执行
//transform.DOMove(Vector3.one, 1).SetDelay(3);
6、设置动画运动以速度为基准
- 使用SetSpeedBased时,移动方式就变成以速度为基准
- 若SetSpeedBased里值为TRUE,是基于速度的方式移动;
- FALSE的话则不是速度,而是时间
- 原本表示持续时间的第二个参数,就变成表示速度的参数,每秒移动的单位数
transform.DOMove(Vector3.one, 10).SetSpeedBased(false);
7、设置动画ID
- 值可为字符串或数值、对象类型
transform.DOMove(Vector3.one, 2).SetId("ID03");
DOTween.Play("ID03");
8、设置是否是可回收的
- 为true的话,动画播放完会被回收,缓存下来,不然播完就直接销毁
transform.DOMove(Vector3.one, 2).SetRecyclable();
9、有一个相对的,设置动画为增量运动
- 相对前方的值做一个增量运动
- SetRelative参数 isRelative(相对的):
- 为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值
- 为falese,传入的就是目标值,即传入值 = 目标值
transform.DOMove(Vector3.one, 10).SetRelative();
10、updata帧类型:SetUpdate
- 第一个参数 UpdateType :选择使用的帧函数
- UpdateType.Normal:更新每一帧中更新要求。
- UpdateType.Late:在LateUpdate调用期间更新每一帧。
- UpdateType.Fixed:使用FixedUpdate调用进行更新。
- UpdateType.Manual:通过手动DOTween.ManualUpdate调用进行更新。
- 第二个参数:为TRUE,则补间将忽略Unity的Time.timeScale,不受其影响
- Time.timeScale = 0;//播放时间的缩放值,当它为0时,Update里的东西就不执行了
ransform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal,true);
Sequence
序列
- 添加动画到队列中、添加时间间隔
void Start()
{
//创建一个队列,把要做的动作引入该队列中
Sequence sequence = DOTween.Sequence();
//**动画1**添加动画到队列中
sequence.Append(transform.DOMove(Vector3.one,4)); //0-4
//中间暂停两秒钟,时间间隔
sequence.AppendInterval(1); //4-**5**
//动画2
sequence.Append(transform.DOMove(new Vector3(5,0,0),3)); // 5-8
}
-按时间点插入动画
//按时间点插入或替换动画:Insert(插入到规定的时间点,插入位置动画)
//这里总时长不变
sequence.Insert(10,transform.DOMove(-Vector3.one,2));
-加入当前动画
方法1、
//边移动边放大缩小
//方法1、`Insert`
sequence.Insert(0,transform.DOScale(Vector3.one*2,4));
sequence.Insert(5,transform.DOScale(Vector3.one,3));
方法2、join
例子:
//创建一个队列,把要做的动作引入该队列中
Sequence sequence = DOTween.Sequence();
//动画1
sequence.Append(transform.DOMove(Vector3.one,4)); //0-4
// 方法2、join:执行过程中加入放大动画
sequence.Join(transform.DOScale(Vector3.one * 2, 4));
//2、增加一个回调
sequence.AppendCallback(appendCallBack);
//中间暂停两秒钟,时间间隔
sequence.AppendInterval(1); //4-5
//动画2
sequence.Append(transform.DOMove(new Vector3(5,0,0),3)); // 5-8
sequence.Join(transform.DOScale(Vector3.one, 3));
-预添加动画、预添加时间间隔
//预添加 会直接添加动画到Append的前面,也就是最开始的时候
sequence.Prepend(transform.DOMove(-Vector3.one, 4));
//预添加时间间隔
quence.PrependInterval(1);
执行顺序问题 它也采取了队列的性质,不过,预添加与原本的的队列相比是一个反向队列 预添加和添加一个是后进先出,一个是先进先出
例如:
Sequence quence = DOTween.Sequence();
quence.Append(transform.DOMove(Vector3.one, 2));
quence.Prepend(transform.DOMove(-Vector3.one*2, 2));
quence.PrependInterval(1);
//执行顺序是 PrependInterval----Prepend-----Append
//就是最后添加的会在队列的最顶端
-回调函数
某一动作执行完毕后去执行某一函数:这里可以监督动作执行完之后
//1、在规定的时间点加入回调
sequence.InsertCallback(4,appCallBack);
//2、增加一个回调
sequence.AppendCallback(appendCallBack);
//3、预添加回调
sequence.PrependCallback(prependCallBack);
参考文章:吴俊荣
Ease运动曲线的设置
曲线是个枚举类型
1、以Ease枚举作为参数
/*
第一个参数 类型,有很多值
第二个参数 Amplitude(振幅):实际就是移动次数,起始点移动到目标算移动一次,再移动回来移动两次
第三个参数 period 值的范围是 - 1~1
值 > 0时,为活动范围的衰减值,活动范围会由大变小
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数
*/
transform.DOMove(Vector3.one, 2).SetEase(Ease.Linear);