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秒后"));   //延迟一秒后调用指定回调函数

最新文章

  1. Android-横竖屏切换问题(转)
  2. 遗传算法在JobShop中的应用研究(part 6:结果显示)
  3. struts标签&lt;logic:iterate&gt;的用法
  4. zhuang 定制iOS 7中的导航栏和状态栏
  5. launch文件概述---1
  6. 使用 NGUI 实现头顶文字及血条
  7. 【缓存】Sql Server 2005/2008 SqlCacheDependency查询通知的使用总结
  8. 以boost::function和boost:bind取代虚函数
  9. GC与显式内存管理
  10. SQL中Truncate的用法(转)
  11. 一、Nginx配置文件详解
  12. INFORMIX 时间函数大全
  13. logback的使用和logback.xml详解
  14. how tomcat works 五 servlet容器 上
  15. Android缓存机制——LruCache
  16. c/c++ 数组 数组的引用,指针数组的引用
  17. 爬虫_豆瓣全部正在热映电影 (xpath)
  18. odoo开发笔记 -- 后台日志输出及分析
  19. .NET Core 2.2发布一览
  20. Microsoft Active Directory(LDAP)连接常见错误代码

热门文章

  1. 微信小程序存放视频文件到阿里云用到算法js脚本文件
  2. log Configuration
  3. Serialization and deserialization are bottlenecks in parallel and distributed computing, especially in machine learning applications with large objects and large quantities of data.
  4. Hadoop MapReduce基本原理
  5. POJ2728 Desert King —— 最优比率生成树 二分法
  6. silverlight DataGrid 内嵌ComboBox 实现加载和保存
  7. hdu 4268 Alice and Bob(贪心+multiset)
  8. RandomUtils
  9. 子元素margin带动父元素拖动
  10. NSString -- UILabel中字体有多种颜色,字符串自动计算高度/换行