7537人加入学习
(77人评价)
Dotween API详解及动效插件(Unity 2017.3)

制作完成于2018-12-14

价格 免费

        /**17-队列—插入动画用法
         *     在帧函数中,按顺序执行
         *     帧被多次执行,则覆盖之前的帧
         *     
         *     添加到空白动画    比如第8s....
         */
        Sequence quence = DOTween.Sequence();
        quence.Append(transform.DOMove(Vector3.one, 2));//把一项加入 0-2s
        quence.AppendInterval(1);//添加延时1s        2-3s
        quence.Append(transform.DOMove(new Vector3(1, 0, 1), 2));//把一项加入  3-5s


        quence.Insert(2, transform.DOMove(-Vector3.one, 1));//在0s插入动画

 

[展开全文]

Blend 增量动画,

比如Domove,2个坐标相加的结果作为最终值

[展开全文]

material.DOFade(0, "_TintColor", 2)

这个可以

[展开全文]

预添加 会直接添加动画到Append的前面,也就是最开始的时候
quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));
这里需要特别说一下预添加的执行顺序问题
它这里也采取了队列的性质,不过,预添加与原本的的队列相比是一个反向队列

 

eg:

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
就是最后添加的会在队列的最顶端

[展开全文]


        /**设置杀手动画
         * 不然,会缓存到DoTween内部数据中
         */
        transform.DOMove(Vector3.one, 2).SetLoops(3, LoopType.Incremental).SetAutoKill(true);
        //下次直接调用 不会涉及计算

 

[展开全文]

 /**23-设置参数—设置延时及以速度为基准的动画
         * 延迟了3s才执行
         *transform.DOMove(Vector3.one,2).SetDelay(3);
         *
         *目标点  速度
         *transform.DOMove(Vector3.one,3).SetSpeedBased();
         *
         *参数 true 以速度为基础
         *transform.DOMove(Vector3.one,3).SetSpeedBased(true);
         *
         *false则不是
         *
         */

 

        transform.DOMove(Vector3.one, 3).SetSpeedBased(false);

 

[展开全文]

        /**24-设置参数—设置ID及设置动画为增量运动
         *
         */
        //设置动画ID   参数 int string object(不建议使用,设计装箱拆箱)
        transform.DOMove(Vector3.one, 2).SetId("Id");
        //可以调用静态方法    调用缓存的动画   减少性能
        //DOTween.Play("Id");

        //是否可回收
        transform.DOMove(Vector3.one,3).SetRecyclable(true);

 

  //增量运动   当前坐标 + 传入值 = 目标值
        transform.DOMove(Vector3.one, 3).SetRelative(true);

 

 

 

[展开全文]

设置动画的帧函数

transform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal, true);
第一个参数 UpdateType :选择使用的帧函数
UpdateType.Normal:更新每一帧中更新要求。 
UpdateType.Late:在LateUpdate调用期间更新每一帧。 
UpdateType.Fixed:使用FixedUpdate调用进行更新。 
UpdateType.Manual:通过手动DOTween.ManualUpdate调用进行更新。
第二个参数:为TRUE,则补间将忽略Unity的Time.timeScale

[展开全文]

(3) Ease 运动曲线的设置
1)以Ease枚举作为参数
例如:
transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 3, 0f);
第二个参数 Amplitude(振幅):实际就是移动次数,起始点移动到目标算移动一次,再移动回来移动两次
第三个参数 period 值的范围是 - 1~1
值 > 0时,为活动范围的衰减值,活动范围会由大变小
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数

2)使用AnimationCurve当作参数
例如:
transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
AnimationCurve 横轴是时间,不过不是具体的时间,而是时间比例
AnimationCurve 纵轴是倍数
假设纵轴的值为v,传入DOMove的第一个参数endValue是e,起始点坐标是s
此物体最后动画结束时的实际坐标即为 v* (e -s)+ s

[展开全文]

值 > 0时,为活动范围的衰减值,活动范围会由大变小
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数

[展开全文]

C#语法糖

OnComplete(() => { })

 

[展开全文]

var list=DOTween.TweensByTarget(transform,true);//收集正在播放的动画(缓存值中)

 

[展开全文]

  var list=DOTween.TweensByTarget(transform,true);
        //收集正在播放的动画(缓存值中)
        //list为空的话,是直接不占内存

        //获取当前正在播放的动画  延迟状态也是正在播放当中的
        var list1 = DOTween.TotalPlayingTweens();

 

[展开全文]

//版本需要升级到 C# 5   Task.Delay(TimeSpan.FromSeconds(1f));
        tweer.Delay();//动画延迟
        /**
         * 硬编码
         * if(time=5){}
         *
         * 对于项目的稳定性很差
         */
        tweer.Duration();//持续时间  infinity无限循环

 

[展开全文]

二、SetVector方法

material.DOVector(<n维度向量>,<属性名称>,变化时长)

[展开全文]

让字已最终显示的效果逐个显示,富文本文字不影响过程

text.DOText("<b>一个字一个字</b>的显示,类似打字的效果", 5f);
[展开全文]