DOTween 是 Unity 里很常用的 补间动画库

“补间”的意思是:你告诉它起点、终点、持续时间,它帮你自动计算中间过程。

比如你不用自己在 Update() 里写:

1
2
timer += Time.deltaTime;
image.color = ...

而是直接写:

1
image.DOFade(1f, 0.5f);

意思是:让这个 Image 的透明度在 0.5 秒内变到 1

安装DOTween

在DOTween官网下载后解压DOTween.zip文件,将解压好的文件拖入Assets文件夹下,导入DOTween

代码相关

首先我们需要引用命名空间:

1
using DG.Tweening;

在学习DOTween前,我们需要理解这些API的命名规则:

  • DO开头:代表执行。参数1:目标值,参数2:执行时间
  • Set开头:设置状态。
  • From:归位

常见用途

常见用途有:

  • 移动物体
1
2
3
// 参数1:目标点
// 参数2:消耗的时间
transform.DOMove(new Vector3(3, 0, 0), 1f);
  • 缩放物体
1
2
3
// 参数1:目标值
// 参数2:持续时间
transform.DOScale(1.2f, 0.3f);
  • UI淡出
1
2
3
// 参数1:目标值,1代表完全不透明,0代表完全透明
// 参数2:持续时间
image.DOFade(0f, 0.5f);
  • 打字机

首先,创建一个UI-Text,填入文本,修改字号和对齐方式

1
2
3
4
5
using UnityEngine.UI;
public Text text;
// 参数1:要显示的文本
// 参数2:文字要在多少时间内完全显示
text.DOText("Hello", 1f);
  • 相机缩放
1
2
3
// 参数1:要缩放的大小
// 参数2:缩放时间
camera.DOOrthoSize(8f, 1f);
  • 相机晃动:常用来做打击感
1
2
3
// 参数1:镜头摇晃的持续时间
// 参数2:摇晃的强度
Camera.main.transform.DOShakePosition(2, 3);

常用方法

  • 设置速度曲线,比如匀速、先快后慢、回弹
1
SetEase(Ease.Linear) // 匀速直线

关于Ease的枚举还有:

  1. Back:回拉。超过目标值再弹回来
  2. Elastic:弹簧弹性。会震荡
  3. Bounce:弹跳。
  4. 等等。
  • 延迟
1
.SetDelay(0.5f)
  • 循环播放
1
2
3
// -1表示无限循环
// Yoyo 表示来回播放
.SetLoops(-1, LoopType.Yoyo)
  • 停止并销毁这个动画
1
.Kill()