赞
踩
DOTween是一个用于Unity的快速、高效、完全类型安全的面向对象动画引擎,为c#用户进行了优化,是免费和开源的,具有大量高级特性
DOTween兼容Unity 2019至4.6版本。 适用于: Win, Mac, Linux, Unity WebPlayer, WebGL, iOS, Android, Windows Phone, Windows Store, PS Vita (PSM), PS3/PS4, Xbox 360/One,任天堂Switch + more(没有测试额外的平台,但除了Flash导出,它应该可以在任何地方工作)
DOTweenPro 使用新的脚本快捷键、可视化动画编辑器、可视路径编辑器以及额外的特性扩展DOTween Pro。2D工具包和TextMesh Pro. DoTweenPro是收费的
官方下载地址: dotween.demigiant.com/downloads/D… 下载页面: dotween.demigiant.com/download.ph… 开放源代码: github.com/Demigiant/d…
首先下载完成后,将压缩包解压到任何地方,将解压后的文件放到你的项目文件目录Assets 下面(只是不要放到Editor、Plugins或Resources目录中) 设置 在导入新的DoTween之后,你必须为了基于您的Unity版本的导入/重新导入附加库设置DoTween,并激活/停用模块。 要设置DoTween,需要打开Unity中的DoTween面板, 从Tools/Demigiant 选择Setup DOTween
导入DOTween命名空间在每个要使用它的类/脚本中:
- using DG.Tweening;
- 复制代码
初始化DOTWIN若要设置一些全局选项,请执行以下操作:
- DOTween.Init(autoKillMode, useSafeMode, logBehaviour);
- 复制代码
如果您不这样做(或者在创建第一个DOTween 之后这样做),那么DOTween将使用默认设置自动初始化。
你可以全局设置它将应用于所有新创建的tweens,或强迫性设置。特定设置将应用于你所创建的特定的tweent
全局设置允许您设置默认的autoPlay 和autoKill 行为、ease Type、全局时间缩放等等。
特定设置,通过链接操作,可以设置ease Type类型,回调函数,循环次数,因此智能感知可以帮助你找到它们。
在这里,举几个链接操作的例子:
- // 创建一个transform补间,并设置它的ease、loops和OnComplete回调
- transform.DOMove(new Vector3(2,2,2), 2).SetEase(Ease.OutQuint).SetLoops(4).OnComplete(myFunction);
-
- // 和上面一样,但是使用换行符使它更易于阅读
- transform.DOMove(new Vector3(2,2,2), 2)
- .SetEase(Ease.OutQuint)
- .SetLoops(4)
- .OnComplete(myFunction);
-
- // 和上面一样,但是存储补间和应用设置没有链接
- Tween myTween = transform.DOMove(new Vector3(2,2,2), 2);
- myTween.SetEase(Ease.OutQuint);
- myTween.SetLoops(4);
- myTween.OnComplete(myFunction);
- 复制代码
另外,一些tween 类型特别附加选项,比如立即进行链接操作,可以通过SetOptions()函数,记住SetOptions()是特别的,主要作用就是在transform进行补间动画的时候,立即链接操作。看一下例子:
- transform.DOMove(new Vector3(2,2,2), 2)
- .SetOptions(true)
- .SetEase(Ease.OutQuint)
- .SetLoops(4)
- .OnComplete(myFunction);
- 复制代码
另外,可以使用SetAs,将当前所有设置,从一个中间复制到另一个,而不用再复制好多的代码:
- // 使用一些设置创建tween并将其存储为tween
- Tween myTween = transform.DOMove(new Vector3(2,2,2), 2)
- .SetEase(Ease.OutQuint)
- .SetLoops(4)
- .OnComplete(myFunction);
-
- // 创建另一个tween,并应用与前一个相同的设置
- material.DOColor(Color.red, 2).SetAs(myTween);
- 复制代码
为了避免不必要地使用更多的资源,它将自己设置为最多200个Tweener和50个同时运行的序列。如果您需要更多,DOTween将自动增加其大小,但您也可以直接设置当自动调整大小:
- // 设置最大渐变为3000和最大序列为200
- DOTween.SetTweensCapacity(3000, 200);
- 复制代码
DOTween 可用于完全通用方式,就像这样:
或者你可以利用它的快捷键,就像这样:
到目前为止,DOTween 可以在这些类型的值之间转换: float, double, int, uint, long, ulong, Vector2/3/4, Quaternion, Rect, RectOffset, Color, string (其中一些值可以在特殊方式)
此外,您还可以创建自定义DOTween插件在自定义值类型之间切换:
创建DOTween的方法有三种:一般方式、快捷键、其他通用方式
这是最灵活的创建方式,可以让你在所有的值之间转换。公共或私人、静态或动态: 例子:
getter:一个委托,它将属性值返回为tween。可以像这样写成一个样子:()=> myValue, myValue属性:的名称。 setter:将属性值设置为渐变的委托。可以写成这样的形式:x=> myValue = x to:要达到的最终价值。 duration:过渡的持续时间。
实例:
- // 在1秒内将一个叫做myVector的向量补间到(3,4,8)
- DOTween.To(()=> myVector, x=> myVector = x, new Vector3(3,4,8), 1);
- // 在1秒内将一个名为myFloat的浮点数补间到52
- DOTween.To(()=> myFloat, x=> myFloat = x, 52, 1);
- 复制代码
DOTween 可以控制已知的Unity对象,比如Transform、刚体、material等。可以直接在这些对象的引用时使用快捷键进行操作,例如:
- transform.DOMove(new Vector3(2,3,4), 1);
- rigidbody.DOMove(new Vector3(2,3,4), 1);
- material.DOColor(Color.green, 1);
- 复制代码
基本快捷键
AudioMixer (Unity 5)
AudioSource
Rigidbody2D 这些快捷方式在后台使用rigidbody2D的MovePosition/MoveRotation方法来正确地动画与物理对象相关的东西。 Move
Unity UI 4.6 快捷键
CanvasGroup (Unity UI 4.6)
PRO ONLY ➨ TextMesh Pro 快捷键 TextMeshPro + TextMeshProUGUI
这些是允许以特定方式在值之间切换的额外的泛型方法。
- //返回一个可用的序列,您可以将其存储并添加渐变。
- Sequence mySequence = DOTween.Sequence();
- 复制代码
注意所有这些方法需要在序列开始之前应用。意思就是序列在程序开始前就要设置好,不能动态的添加序列。 还请注意任何嵌套的tweener/序列都需要在将其添加到序列之前完全创建。因为在那之后它会被锁上。 延迟和循环(当不是无限的时候)即使在嵌套的tweens中也能工作。
API:
- //将给定的tween添加到序列的末尾
- mySequence.Append(transform.DOMoveX(45, 1));
- 复制代码
- //将给定的回调函数添加到序列的末尾。
- mySequence.AppendCallback(MyCallback);
- 复制代码
- //将给定的区间添加到序列的末尾。
- mySequence.AppendInterval(interval);
- 复制代码
- //在给定的时间位置插入给定的tween,从而允许您重叠tween,而不是将它们一个接一个地播放。
- mySequence.Insert(1, transform.DOMoveX(45, 1));
- 复制代码
- //在给定的时间位置插入给定的回调函数。
- mySequence.InsertCallback(1, MyCallback);
- 复制代码
- //在添加到序列的最后一个补间或回调的同一时间位置插入给定的补间。
- // 旋转动画将与移动动画一起播放
- mySequence.Append(transform.DOMoveX(45, 1));
- mySequence.Join(transform.DORotate(new Vector3(0,180,0), 1));
- 复制代码
- //将给定的补间添加到序列的开头,按时间推进其余内容
- mySequence.Prepend(transform.DOMoveX(45, 1));
- 复制代码
- //将给定的回调函数添加到序列的开头。
- mySequence.PrependCallback(MyCallback);
- 复制代码
- //将给定的区间添加到序列的开头,按时间推进其余内容。
- mySequence.PrependInterval(interval);
- 复制代码
提示:您可以创建仅由回调组成的序列,并将它们用作计时器或类似的东西。
实例 创建序列
- // 获取一个可用的自由序列
- Sequence mySequence = DOTween.Sequence();
- // 在开始时添加一个移动补间
- mySequence.Append(transform.DOMoveX(45, 1));
- // 在前一个补间完成后立即添加一个旋转补间
- mySequence.Append(transform.DORotate(new Vector3(0,180,0), 1));
- // 将整个序列延迟1秒
- mySequence.PrependInterval(1);
- // 在序列的整个过程中插入一个缩放补间
- mySequence.Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));
- 复制代码
与前面的示例相同,但使用链接(加号换行以使事情更清晰):
- Sequence mySequence = DOTween.Sequence();
- mySequence.Append(transform.DOMoveX(45, 1))
- .Append(transform.DORotate(new Vector3(0,180,0), 1))
- .PrependInterval(1)
- .Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));
- 复制代码
当涉及到将设置应用到DOTween 时,DOTween使用了一种链式方法。或者您可以更改将应用于所有新创建的tween的全局默认选项。
一般设置
实例属性 float timeScale; 提示:这个值可以设置从这个动画到另一个动画的平滑效果 使用:
- myTween.timeScale = 0.5f;
- 复制代码
链式设置 这些设置可以设置到所有类型的动画 也可以在运行的时候设置
链式回调
注意:如果想使用嵌套回调,是仍然有效的,但是要按照正确的顺序。
如果想使用带参数的回调,可以使用Lambdas表达式:
- // 回调函数没有参数
- transform.DOMoveX(4, 1).OnComplete(MyCallback);
- // 回调函数带参数
- transform.DOMoveX(4, 1).OnComplete(()=>MyCallback(someParam, someOtherParam));
- 复制代码
Tweens提供了一套很有用的协同程序,可以将其设置在协同器中,这样您就可以等待一些事情发生 这些方法都有一个可选的bool参数,该参数是设置是否允许返回:
基本将Tweens的API总结了一次,包括如何设置全局参数,使用Tweens,创建序列,设置回调等内容,以后有时间,再将API的内容作用说明以及效果展示一下。好啦,结束
作者:恬静的小魔龙Unity
链接:https://juejin.cn/post/6981236475983577124
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。