Unity插件学习——DOTween(一)

来源:互联网 发布:淘宝打包员是干什么的 编辑:程序博客网 时间:2024/05/14 12:43

了解特性

先上一波翻译,了解DOTween特性。
本人使用Google全页翻译插件,有不准的地方多多包含。

支持平台
除了Flash其他几乎都可以完美运行。

速度和效率
不仅非常快,而且非常高效:一切都被缓存和重用,以避免无用的GC分配。 智能感知和类型安全。

快捷方式
直接扩展常用对象的快捷方式扩展如下:

// 在1秒内移动到位置(1,2,3)。transform.DOMove(new Vector3(1,2,3), 1);// 在1秒内缩放到(3,3,3)。transform.DOScaleY(3, 1);// 暂停这个transform的所有Tween。

非常准确
时间以非常精确的方式计算。这意味着1000个循环,每个1秒钟将播放完全与1000秒的单个循环一样长。

变化一切(几乎所有)
DOTween可以对每个数值和一些非数字值进行动画。它甚至可以用动画的字符串,为富文本支持。

捕捉,轴约束和其他选项
选择有关如何补间值的其他选项,例如捕捉(将值捕捉到整数)或轴约束。

完全控制
播放,暂停,倒带,重新启动,完成,Goto和吨其他有用的方法来控制你的补间。

分组
将补间组合到序列中以创建复杂的动画(不需要是a,uh,序列:它们也可以彼此重叠)。

可混合补间
一些补间可以实时混合在一起,由于强大的DOBlendable快捷方式。

路径
沿线性和弯曲路径动画的东西,以及您的旅行代理的方向的附加选项。

在播放时更改值和持续时间
随时更改补间的开始/结束值或持续时间,即使在播放时。

安全模式
激活可选的安全模式,让DOTween处理意外事件,例如在玩耍时破坏补间的目标。

协同的收益
各种“WaitFor…” 方法在协同程序中使用,允许您等待补间完成,杀死,启动或到达给定位置或循环。

多种旋转模式
旋转补间可以采用最短路径,完整路径,或使用本地或基于世界的轴。

共享方法
它是Tweener还是序列?谁在乎?它们都继承自Tween,因此你可以存储它们并以同样的方式控制它们。

额外
额外的虚拟方法做一些东西喜欢在给定的延迟后调用函数。

所有的基础
回调,循环,易用性(包括AnimationCurves和自定义缓动功能),SpeedBased和许多其他补间选项。此外,更新类型的选择:常规,固定,晚,加上选项,使其与时间无关。

细节参考官网:http://dotween.demigiant.com/


使用方法

命名空间

using DG.Tweening;

A.调用静态方法

使用DoTween.MathodName调用方法。

支持的数值类型:
float, double, int, uint, long, ulong, Vector2/3/4, Quaternion, Rect, RectOffset, Color, string

接口:
Push、Shake、ToAlpha、ToArray、ToAxis、To

看完表示被震惊了,什么数值都可以改!
现在终于知道以前自己写小游戏自己实现动画系统多蠢了 - -.

用法:

private float myValue;//1秒内将myValue设置到10。DoTween.To(()=> myValue, x=> myValue = x, 10f, 1f);static float value;//1秒内将value设置到10,无限以溜溜球模式循环。DoTween.To(()=> float, x=> float = x, 3f, 1f).SetRelative(true),SetLoops(-1, LoopMode.Yoyo);

B.快捷方式

直接在对象示例上调用扩展方法。

已实现扩展方法的类

Unity5:
AudioSource、Camera、Light、LineRenderer、Material、Rigidbody、Rigidbody2D、SpriteRenderer、TrailRenderer、Transform

Unity UI 4.6:
CanvasGroup、Image、LayoutElement 、Outline、RectTransform、ScrollRect、Slider 、Text

Pro版本:
tk2dBaseSprite、tk2dSlicedSprite、tk2dTextMesh、TextMeshPro 、TextMeshProUGUI、Spiral

用法

transform.DOMove(new Vector3(2,2,2), 1);rigidbody.DOMove(new Vector3(2,3,4), 1);material.DOColor(Color.green, 1);

Sequence 序列

序列类似一个Tween,但是它是一个Tween的组。
可以顺序,也可以并行。
注意:

  • Tween仅仅可以同时存在在一个Sequence中。
  • Sequence可以嵌套。
  • Sequence一旦执行不可以单独控制Sequence中的Tween或Sequence。

用法:

// 首先,新建一个Sequence:var sequence = new DOTween.Sequence();// 1.添加一个 (一秒内向X方向移动45)的Tween。sequence.Append(transform.DOMoveX(45, 1));// 2.追加一个 (一秒内逆时针旋转180°)的Tween。sequence.Append(transform.DORotate(new Vector3(0, 180, 0), 1));// 3.追加一个 延时一秒 的Tween。sequence.PrependInterval(1);// 4.在0的位置上 插入一个(在当前Sequence总时长内,设置缩放为(3,3,3))的Tween。sequence.Insert(0, transform.DOScale(new Vector3(3, 3, 3), sequence.Duration()));// ↑ 注意,Duration已经排除PrependInterval(延时),所以Duration为DOMoveX.Duration为3。// 播放顺序:4->1->2->3。// 总时长:6s。

当然这样写更 简洁:

//创建一个Sequence:Sequence sequence = DOTween.Sequence();//对sequence进行操作sequence.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), sequence.Duration()));//不推荐缩到一句,因为未初始化时不可以获取sequence的属性。

下一篇文章继续写设置,选项,回调,控制补间等

0 0