http://dotween.demigiant.com/documentation.php#header
http://blog.csdn.net/tom_221x/article/details/52403017
http://blog.csdn.net/ldy597321444/article/category/6301355
http://blog.csdn.net/penchaoo/article/details/53745879?locationNum=1&fps=1
http://blog.csdn.net/lyh916/article/details/45888117
http://blog.csdn.net/jiejieup/article/details/41521577
http://blog.csdn.net/a215425573/article/category/5848997
http://blog.csdn.net/MyCodecOdecoDecodE/article/details/71445408?locationNum=11&fps=1
该篇文章部分取自上面的网址。
总结说下:
1,先是全局的设置,autoplay,autokill,变动方式等。
2,3个基本,DOxx做什么,Setxxx以什么样的方式,oNxxx回调
3, 3个调用,绑定调用transform.DOMove,正常调用ShortcutExtensions.DOMove,第3种:DOTween.To
4,帧动画,使用Sequence的操作
5,DoTweenAnimation可视化的操作,这个很方便代码学习,记得勾选回调事件。
6,路径操作。
做什么,以什么的方式,播放,设置回调函数,删除
新添加:
DoTweenAnimation的使用,使用DoTweenAnimation动态改变数据并在上一个状态下继续运动。比如:使用自定义曲线时,需要转动多次,
并且是连续的,每次转动时间可变,做法:DOKill()先杀掉当前的,duration,endValueV3,onComplete设置想要的值,如果不设置则使用原本界面上的内容
,CreateTween()创建一个DoTweenAnimation,DOPlayForward()播放,在DoTweenAnimation上勾选AutoKill(可以不勾选),onComplete等的事件。
1.1基本
设置最开始的属性,当然也可以代码设置。
http://www.cnblogs.com/android-blogs/p/5855359.html
需要记住:
1,如果在创建第一个Tween后才调用DOTween.Init将不会生效。
2,你可以在调用DOTween后链式调用DOTween.SetTweensCapacity来一同初始化可同时执行最大的Tweers和Sequence数量。
3,使用默认设置,还是panel面板的设置:
A什么都不调用将使用默认设置,可在代码中查看
B 调用DOTween.Init(); 将使用面板的设置,
C 可以使用init(xx,xx)设置全局数据,也可以DOTween.xxx的方式设置。
2,全局参数的代表
在DoTween.XML中有很多说明,但都是英文的。
1,recycleAllByDefault
如果为true那么所创建的tween建可以循环利用,这意味着当tween播放挂起时并不会被摧毁,它们将会被放到缓存池待重新使用,这样可以避免GC再为可重复利用的tween分配
2,useSafeMode
如果为true,那么tween将会有些性能将会低一些,但更安全,tween将会去处理一系列事情,如tween在播放而目标为空。
3,logBehaviour
打印什么类型日志,默认打印error类型
http://dotween.demigiant.com/documentation.php#header官方网站有一系列的函数,夫复何求。
不存在父物体时,2者是一样的。
Tweener tOne = transform.DOMove(new Vector3(3, 3, 25), 3f, true);
父物体为(0,0,25),子物体原本为(0,1,0),调用之后,子物体为(3,3,0)
doMove对应世界坐标,所以结果是子物体受父物体影响。
doLocalMove对应本地坐标,设置多少就是多少,所以子物体为(3,3,25)
1. RotateMode
Tweener tOne = transform.DOLocalRotate(new Vector3(390, 390, 345), 3f, RotateMode.Fast);
这里有一个RotateMode,只需要进入之后,都是有文字说明的,只不过是英文而已。
这里选择390度,Fast就直接是旋转60度,而FastBeyond360,就是先旋转360,再60.
2.Image的淡入淡出
Tweener tOne = transform.GetComponent
Tweener tOne = transform.GetComponent
这2种用法都可以,但是跟shader材质有关系。跟图片也好像有关系。Shader或者图片不对,也无法表现出来。
3.3d物体的淡入淡出
//Tweener tOne = transform.GetComponent
//Tweener tOne = transform.GetComponent
和上面一样,跟那些因素也有关系,但是无论怎么样,DOFade下alpha的值是在渐变的,只是最后没有表现出来而已。
4. RectTransform
很有意思,Transform所拥有的所有DOXXX函数,RectTransform都拥有。而且用法一样。
也分DOMove与DOLocalMove,而且用法一样,并且,RectTransform自带的那些Doxxx函数,都是local的。
//Tweener tOne = transform.GetComponent
Tweener tOne = transform.GetComponent
//Tweener tOne = transform.GetComponent
//Tweener tOne = transform.GetComponent
与绑定使用一样,用法完全相同,可以改变任意的对象相应属性。
//冲压机,在 5秒内在原始坐标和下面坐标之间,来回冲压
//transform.DOPunchPosition(new Vector3(10, 10, 10), 5);
//冲压机,在 5秒内在原始旋转和下面角度之间,来回冲压变化
//冲压机,在 5秒内在原始比例和下面比例之间,来回冲压变化
// 10 秒内物体 X,Y,Z坐标在 自身-5到自身加 5之间震动
//transform.DOShakePosition(10,new Vector3(10, 10, 10));
// 10 秒内,物体 X,Y,Z旋转角度在自身-5到自身加 5之间震动
// 10 秒内,物体 X,Y,Z比例在自身-5到自身加 5之间震动
事件必须勾选,否则无法触发出来。
1.
DOTween.Sequence() 静态,返回一个新的空序列。
sequence.Append(Tween tween) 添加一个动画到序列末尾。(意思就是当序列前面动画播放完毕时此动画才开始播放)
sequence.AppendCallback(TweenCallback cb) 添加回调函数到序列末尾。(当序列前面动画播放完毕时会执行此方法)
sequence.AppeedInterval(float interval) 添加一段空时间到序列末尾。(当序列前面动画播放完毕时会延迟一段时间)
sequenve.Insert(float time,Tween tween) 插入一段动画到指定时间。(注意动画是和原序列当前时间动画合并重叠)
sequenve.InsertCallback(float time,TweenCallback cb) 插入回调函数到序列指定时间。
sequenve.Join(Tween tween) 插入动画与序列最后一个动画(这里的最后是指最后加入序列而非序列末尾)同时播放。
sequenve.Prepend、sequenve.PrependCallback、sequenve.PrependInterval和前面三个类似,这里是加入到序列开头。
2.
a.以上方法只能在序列刚被创建之后执行也就是必须是在创建序列同一个代码块,或者是当序列暂停时执行。否则无效。
b.一个动画必须是完全被创建之后才能加入到序列之中,因为加入到序列之后该动画将会被锁定。
c.无限循环的动画是不能被加入到序列中。
d.你可以创建一个序列只有回调函数和延迟,这样这个序列就当做了一个计时器使用。
public void Test_Sequence() {
Sequence tmpSeq = DOTween.Sequence();
RectTransform rt = transform.GetComponent
Tweener t1 = rt.DOLocalMoveX(100, 2);
Tweener t2 = rt.DOLocalMoveY(50, 2);
Tweener t3 = rt.DOScaleX(5, 2);
Tweener t4 = rt.DOScaleY(2, 1);
tmpSeq.Append(t1).AppendCallback(() => { print("t1 is onComplete"); }).AppendInterval(2);
tmpSeq.Append(t2);
tmpSeq.Insert(1, t4);
tmpSeq.Join(t3);
tmpSeq.AppendCallback(() => { tmpSeq.Kill();});
tmpSeq.PlayForward();
}
上面的链接有详细的讲解
事件必须勾选。
public void Test_Path() {
DOTweenPath tmpPath = transform.GetComponent
tmpPath.DOPlay();
tmpPath.onComplete.AddListener(() => { print("path is onComplete"); tmpPath.DOKill(); });
}