using DG.Tweening;
 
Tweener
首先dotween在游戏刚开始运行时会默认进行一次初始化
DOTween.Init();
如果为了有更好的效率,可以手动控制最大同时进行dotween动作的执行数量,
DOTween.Init(true,true,LogBehavior,Verbose).SetCapacity(200,10);  //200个是tween补间动作,10是squence
 
有三种方式创建tweener动作
1: DOTween.To(getter,setter,to,float duration)
getter, 数值补间动作返回值   setter,数值补间动作的设置值, to 是目标的数值, duration是补间动作的时长
 
getter,和setter的变量一致, 利用lambda表达式来设置
()=>变量A ;  x=>变量A=x
 
如:  float myFloat;   //定义一个float
 
void Start()
{
DOTween.To(()=>myFloat, x=>myFloat=x, 10f,1f);   //让myfloat在一秒内,从myfloat当前值过度到10;
}
 
  DOTween.To(setter,from, to,float duration)    //另一种写的方法, 只写setter,定义 数值的开始和结束值
 
void Start()
{
DOTween.To(x=>myFloat=x, -10f,10f,1f);   //让myfloat在一秒内,从-10过度到10;
}
 
此外还有DOTween.Punch();   //摇晃数值到初始值
//方法原型  
public static TweenerCore<Vector3, Vector3[], Vector3ArrayOptions> Punch(DOGetter<Vector3> getter, DOSetter<Vector3> setter, Vector3 direction, float duration, int vibrato = 10, float elasticity = 1);

//参数1:getter 参数2:setter 参数3:enPos 参数4:duration时间 参数4:晃动的次数 参数5:晃动的幅度
DOTween.Punch(() => myValue, x => myValue = x, new Vector3(100, 100, 100), 3,1,100);

 
DOTween.shake();   //颤抖数值
 
DOTween.ToArray()     //数值集合间过度
如 
Vector3[] endValues = new[] { new Vector3(1,0,1), new Vector3(2,0,2), new Vector3(1,4,1) };
float[] durations = new[] { 1, 1, 1 };
DOTween.ToArray(()=> myVector, x=> myVector = x, endValues, durations);
 
DOTween.ToAlpha()    颜色alpha过度
DOTween.ToAxis();      过度变换 vector3中的某一轴数值
如:
DOTween.ToAxis(()=> myVector, x=> myVector = x, 3, 1);   //始终变换x轴的数值到3,在一秒内
 
DOTween.ToAxis(()=> myVector, x=> myVector = x, 3, 1, AxisConstraint.Y);   //1秒内变换myVector 到(myVector.x,3,myVector.z)
 
 
 
2: 组件后缀形式    (特点是前缀加DO  :DOMove  ,DOScale)
tranform.DOMove(targetVector3, durationTime, isSnap);   //这是从当前位置值移动到目标值
tranform.DOMove(targetVector3, durationTime, isSnap).From();  //这是从targetVector3
值作为起点,移动到当前位置值
 
tranform.DoMove和rigidBody.DoMove.  功能相同;都是移动到目标距离
3 :针对不同组件的属性数值有对应的dotween补间动作值
 
如:audiosource.DOFade(targetVolume,durationTime);//是将声音值过度到对应值
 
 
sequence 
就像动画编辑器一样,在时间轴上布置dotween 动作
布置动作的API有 Append (tweener) AppendCallBack(方法)   
AppendInterval(间隔时间)序列结尾增加间隔时间      
以及PreAppend(tweener) 开头位置 插入 一个tweener
 PreAppendInterval (time)   开头位置插入一个空隙时间  
 
Insert(插入时间,tweener)  无视序列顺序, 同步进行 
InsertCallBack();
 
sequence的总时间 sequence.Duration();
 
如 void Start()
{
Sequence mySequence=DOTween.Sequece();  //定义一个sequence
mySequence.Append(transform.DoMoveX(3f,1f));   //x轴一秒内移动到3
mySequence.AppendInterval(2f);  //延迟2秒
 
mySequence.AppendCallback(()=>Debug.log("2秒后.."));  //两秒后调用一个回调函数
 
mySequence.PreAppend(tranform.DoScale((5f,5f,5f),1f));  //开头插入1秒内一个缩放到(5,5,5)的补间动作
mySequence.PreAppendInterval(1f);//序列开头插入1秒的等待时间
 
mySequence.Insert( 2f, Renderer.Material.DoColor(Color.Green,5f) );   //在序列第二秒插入一个并行的补间动作: 5秒内材质变换成绿色;
}
 
 
 
Chained Setting   代码链式设置    tweener后可以跟随无限个以下方法
如: myTweener.SetEase().SetRelative(true).OnComplete()......;
 
Tweener.SetAs(tweener);   复制设置数值到新的tweener
.SetAutoKill(false)  结束时禁止销毁    适用于经常使用的情况
.SetEase(Ease.Liner)  过度方式
.SetLoop(int 次数,LoopType)
.SetRecycle()   重复利用   不同于SetAutoKill,它会被其他tweener发起者调用
.SetRelative();   相对数值,结束值变成了开始值+结束值  如(1,1f) 移动到1,relative为true后 变成 移动当前数值+1
.SetUpdate(UpdateType, bool isIndenpendant);  update模式, 以及是否受unityENgine的timescale影响  默认false  受影响    尽量不用 fixed 一旦 timescale为0,就没有补间动画
 
Chained Callbacks
.OnComplete(方法)   补间动画结束调用方法
.OnKill()
.OnPlay()
.OnPause()
.Rewind()
.OnStart()
.OnUpdate()
OnWayPointChange()
.OnStep();
 
特殊后缀
.From(bool isRelative)   isRelative 真时, 起始位置为 endPos +StartPos
.SetDelay()
.SetSpeedBased  速度  需要 SetEasy.liner   
 
 
 
字幕的渐显效果
 
string zimu;
DOTween.TO(()=>zimu,x=>zimu=x, "要显示的台词",durationTime).setOption(true,scrambleMode)  ;     //是否使用richtext,以及混乱变换字符
 
 把补间动作设置内容保存成对象,  用setAs(),来调用,方便全局调试
 
TweenParams tParms = new TweenParams().SetLoops(-1).SetEase(Ease.OutElastic);
// Apply them to a couple of tweens
transformA.DOMoveX(15, 1).SetAs(tParms);
transformB.DOMoveY(10, 1).SetAs(tParms);
 
控制补间动画
1
DOTween.pauseAll();  //停止所有补间动画
DOTween.Pause(id) ;//停止制定id的补间动画    id设置     tweener.SetId(object);
DoTWeen.Pause(组件)  //停止组件上的所有补间动画
 
2
tweener.Pause();
 
3
myTransform.DOPause();    //组件快捷方式前缀加DO
 
 
所有控制补间动画的API    (组件后缀名称前缀加DO)     如DOTween.Pause(id)   myTransform.DOPause();
 
Complete/ALL //立即播放到结尾
Flip/All  //反转播放顺序
 
Play/All 
Pause/all
 
PlayForward/All
PlayBackward/all
 
Goto/all   //在某处时间播放
 
Kill/all   //立即销毁tweener ,即使setAutoKill(false)
 
Restart//all
Rewind/all    //和restart 区别是 rewind起始位置不播放
 
TogglePause/all   //play和pause状态间切换
 
根据状态获得tweener
 
DOTween.PausedTweens();  //获得所有暂停的tweener
 
DOTween.PlayingTweens();
 
DOTween.TweenById(object id, bool playingOnly=false);
 
DOTween.TweenByTarget(object target,bool playingOnly=false) //根据组件获得其tweener
 
DOTween.IsTweening(object idor Target) :bool   //目标是否tweening
 
DOTween.TotalPalyingTweens():int   //全部正在播放的tweener个数
 
tweener实例的状态
 
myTweener.fullPosition   //全部播放的时间  包括循环和延迟
 
myTweener.completedLoops  //以及循环的次数
myTweener.Delay();   //获得延迟的时间    myTweener.SetDelay(2f)  是指延迟的时间
 
myTweener.Elapsed(bool includeLoops=true);  //已经播放过的时间
.ElapsedPercentage();
myTweener.Duration(bool includeLoops=true);   //补间动画的时长,不包括延迟的时间
 
myTweener.IsActive();
myTweener.IsBackWard();
myTweener.IsComplete()
myTweener.IsPlaying()
myTweener.loops();
 
 
异步协程
yield return myTween.WaitForCompletion();  //等待tweener结束
 
yield return myTween.WaitForElapsedLoops(2) //等待两次循环后
 
WaitForKill()  //等待销毁后
 
waitForPosition(0.5f)  //等待时间位置在0.5秒后
 
waitForRewind //等待重播
waitForStart()  //等待开始    有延迟的情况
 
 
改变tweener的动画起始和结束值
 
tweener.ChangeEndValue(newEndValue,float duration=-1,bool keepStartValue)  //keepStartValue 为真时,当前值设为开始值  ,duration值大于0,则重设补间时间
 
tweener.ChangeStartValue(newStartValue,float duration=-1)
 
tweener.ChangeValue(newStartValue,newEndValue,float duration=-1);
 
 
DOTVirtual    实用的方法
 
DOTVirtual.Float(float from,float to,float durationTime, Callback);
 
DOTVirtual.Float(-10f,10f,1f,x=>Debug.log(x));     //一秒内从-10到10, 并每帧打印当前过度值
 
DOTVitual.DelayedCall(float delayTime, Callback, bool isIgoreTimeScale=true)   
DOTVitual.DelayedCall(1f,()=>Debug.log("1秒后"));   //延迟一秒后调用指定回调函数

DoTween学习笔记的更多相关文章

  1. DoTween学习笔记(二) UGUI结合使用(实现一些简单效果)

    UGUI官方实例中是使用Animation来控制UI的移动,放大缩小动画等等, Animation来控制UI的动画工作量实在是太多了, 所以我们一般使用itween,DoTween. 来控制动画, 这 ...

  2. DoTween学习笔记(一)

    DOTween是一个快速,高效,完全统一的类型安全的对象属性动画引擎,免费开源,大量的高级特性. DoTween兼容Unity4.5以上的版本,支持的平台: Win, Mac, Unity WebPl ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  7. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  8. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  9. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

随机推荐

  1. var let Hositing const Temporal Dead Zone

    var  let  Hositing const Temporal Dead Zone 临时死区

  2. REST RPC HTTP vs 高性能二进制协议 序列化和通信协议

    edisonchou https://mp.weixin.qq.com/s/-XZXqXawR-NxJMPCeiNsmg .NET Core微服务之服务间的调用方式(REST and RPC) Edi ...

  3. Axure Base 07 元件使用思路的补充

    我们曾经对axure线框图基本元件进行过说明,现结合这我对这些元件的使用习惯,对部分元件的使用,再做一些补充. 1. 图片:可以编辑悬停.按下时候显示不同的图片,做图片的一些特殊效果. 2. 文本(l ...

  4. Vijos 1921 严厉的班长 【状态压缩动态规划】

    严厉的班长 描述 木姑娘在班级里面是班长.虽然是副班长,却有着比正班长更高的威信,并深受小朋友们的爱戴. 每天眼保健操时间,木姑娘都要监督所有小朋友认真做眼保健操.整个过程被描述为n个时间段,第i个时 ...

  5. linux下使用无线网卡的命令行方法(wifi,iwconfig)

    原文地址:linux下使用无线网卡的命令行方法(wifi,iwconfig) 作者:andyhzw (1)首先关闭开发板的有线网卡 [root@FriendlyARM /]# ifconfig eth ...

  6. 中文用户名的js检验正则

    原文:http://www.jb51.net/article/20719.htm 好多网站需要用中文用户名注册,下面的代码就是客户端检测.强烈建议后台也要控制一下. username1: " ...

  7. Getting Started with the Intel Media SDK

    By Gael Hofemeier on March 19, 2015 Follow Gael on Twitter: @GaelHof Media SDK Developer’s Guide Med ...

  8. NSString -- UILabel中字体有多种颜色,字符串自动计算高度/换行

    一:UILabel中字体有多种颜色 UILabel *label = [[UILabel alloc] init]; label.frame = CGRectMake(, , , ); label.b ...

  9. 【POJ 2406】 Power Strings

    [题目链接] 点击打开链接 [算法] KMP 如果字符串中存在循环节,则next[len] = (循环节个数 - 1) * 循环节长度 循环节个数 = len / (len - next[len]) ...

  10. API接口文档的撰写

    接口文档: 要写:接口简介.请求参数.返回结果.注意事项. 下面以“喜马拉雅的 ‘圈子’ ”为例子: 接口一 (1)接口简介 http://ipservice.mogujie.com/ipservic ...