参考自DOTween官方文档:
DOTween起始上手起来很快,当然前提也是用心看一下哈。> 可以在Unity AssetStore下载得到。
使用方法:
准备:
在导入DOTween后,你需要设置dotween额外的库设置基你的Unity版本。Tools—–>DOTween Utility
Panel——>点击SetupDoTween即可。DOTween只是为了对应Unity的版本不需关心更多。**
一,最先简单的使用一下DOTween:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
给cubeA,B指定连个Cube后运行,就可以看到效果了。
前提说明:
Tweener:一个持有值的控制并使值起作用的tween
Sequence:一个特殊的tween,与其控制一个值,Sequence控制其它tweens和将它们当成一个组。
Tween:一个通用的词,表名包括Tweener和Sequence Nested
tween : 一个包含在Sequence内的tween。方法前缀:Prefixes 前缀对于编辑器代码感应很重要,所以计量记住这些:
DO开头:操作所有已知对象,如transform对象或material对象。当然也是DOTween类的前缀。
transform.DOMoveX(10, 1);
transform.DORestart();
DOTween.Play();
Set: 所有可以链式返回tween的设置。(除了From之外,尽管把它当作一个设置来用,但它实际上并不是一个真正的设置)
myTween.SetLoops(4, LoopType.Yoyo).SetSpeedBased();
On: 所有可链式返回tween的回调
myTween.OnStart(myStartFun).OnComplete(myFunction);
二 ,解析(初始化):
1,在要使用Dotween的类里引入命名空间 DG.Tweening;
2,初始化DOTween全局配置,不初始化将使用默认值,后面仍可以改变初始化的配置,具体方法下步。
需要记住:如果在创建第一个Tween后才调用DOTween.Init将不会生效。
考虑到你仍然在任何时候初始化设置,可以使用全局设置。Global settings
通常,你可以在调用DOTween后链式调用DOTween.SetTweensCapacity来一同初始化可同时执行最大的Tweers和Sequence数量。
例子如下举例B:还有多一种选择就是使用设置Panel的初始化配置:假如在DOTween.Iint初始化时不传任何参数或者传空,那么DOTween将会对此参数使用Panel的设置,但仍需要在代码调用一次Init并参数为空,要不将使用默认的参数。如:
在Unity工具栏: Tools—–>DOTween Utility Panel—>Preferences 设置:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
解析一下初始化参数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
三,解析(tween创建方式和设置tween):
创建tween有3中方式:通用方式,快捷方式,额外通用方式。
1,通用方式: 这是最灵活的方式,播放中间几乎允许你进行任何值得运算,包括public private static或dynamic(和你想的一样,快捷调用方式最后也是调用这个方法)
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
2,快捷方式:
DOTween的快捷方法一些Unity类实例可以使用,像transform, Rigibody和Material等,可以直接从它们的引用开始一个tween, (也将自动的设置这个对象自身为tween驱动的对象) 除了个别指定的外,每个快捷调用也都有一个Form()方法的调用,直接在快捷方法后链式调用From()就会把目标 tween变为起始Tween(也就是把始终位置调换)。 记住:当把Form分配给tween时,目标对象位置将直接跳到起始位置(你写那行代码时就跳,而不是等到tween启动)。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
3,额外通用的法式:
这些额外通用的方式允许tween的值通过特殊的方式指定。 除了指定的外,这些方式也有Form(),与快捷调用类似。
- 1
- 2
- 3
- 1
- 2
- 3
无论使用哪种方法,最终会返回一个Twenner或Sequence 所以你仍然可以保持着它们的引用,也可以不关心他们的区别都保存为一个Tween。 也可以直接使用DOTween的多种静态方控制Tween:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
以上只是创建了tween,下面说明如何设置tween,如 渐变类型,全局时间缩放等。
设置分为全局设置和特殊设置:
1,全局设置:
你可以设置全局配置,这将应用到新建的tween,全局设置允许设置tween自动播放那个和自动关闭行为,渐变类型,全局时间缩放,之类的参数。 设置的方法通常都是DOTween的静态方法:
DOTween.defaultAutoKill = false; DOTween.defaultEaseType = Ease.InOutCirc;
2,特殊设置:
特殊设置是通过分配的链将以“Set”开始(callback除外),所以编辑器的代码感知会帮你找到它们。
- 1
- 1
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
然而,一些tween类型有它们特殊的选项,这个由tween的值类型可不可以设置SetOptions()决定,只要记住setOption()是特殊的,在maim tween的创建方法后要立刻绑定调用:
- 1
- 2
- 3
- 1
- 2
- 3
甚至可以copy一个tween的设置到另一个tween,使用SetAs()
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
四,创建一个Sequence:
Sequence像Tweeners,但并不直接控制参数或值,而是把Tweeners或Sequence当成一个组。
Sequence可以包含Sequence,多少有hirecrchy的深度决定,没有限制。
可以用如下两个步奏创建一个Sequence:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
提示:如果你创建一个Sequence知识为了使用回调和定时器,那么可以这样使用:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
五,其它:
当你创建一个tween的时候它将会自动播放直到完成loop次数,除非你改变全局设置的defaultAutoPlay设置。
当一个tween播放完成将会自己摧毁,这意味着你不能再次使用这个tween,除非你改变全局设置的defultAutoKill
如果你的tween的target为空,在tween播放时将会报错,你需要注意这个问题或者激活安全模式。如果你激活recycling(再循环),DOTween将会缓存你创建的所有的tween,所以可以不再建新的tween就可以重复利用它们。
当然,为了避免占用过大的资源,里面设置最大200个tween和50个Sequence同时运行,如果需要更多,DOTween将自动递增容量,但你也可以直接闭避免卡顿自动调整容量
//设置最大tween数量3000和最大Sequences数量200:
DOTWeen.SetTweensCapacity(3000,200);
任何时候你想清除DOTween的缓存或彻底重置它们,可以调用DOTween.Clean(),这将摧毁所有的tween和清除所有的DOTween缓存。//循环利用a tween
你不需要手动循环利用tweens,你可以选择自动重复利用全部或者只指定一些,你依旧可以任何时候改变Tweener的结束和开始值