1. DOTween 基础
基本语法
// 基本补间动画
transform.DOMove(new Vector3(2, 2, 2), 1f);// 链式调用
transform.DOMoveX(2, 1f).SetEase(Ease.OutQuad).SetDelay(0.5f);
2. 常用动画类型
变换动画
// 移动
transform.DOMove(new Vector3(1, 2, 3), 1f);
transform.DOLocalMove(new Vector3(1, 2, 3), 1f);// 旋转
transform.DORotate(new Vector3(0, 90, 0), 1f);
transform.DOLocalRotate(new Vector3(0, 90, 0), 1f);// 缩放
transform.DOScale(new Vector3(2, 2, 2), 1f);
transform.DOScaleX(2, 1f); // 仅X轴
UI 动画
// 图像/文本颜色
image.DOColor(Color.red, 1f);
text.DOColor(Color.blue, 1f);// 透明度
canvasGroup.DOFade(0, 1f);// UI元素移动
rectTransform.DOAnchorPos(new Vector2(100, 100), 1f);
其他动画
// 材质属性
material.DOColor(Color.green, "_Color", 1f);
material.DOFloat(1, "_Glow", 1f);// 数值变化
DOTween.To(() => health, x => health = x, 100, 1f);
3. 动画控制
动画参数设置
// 设置缓动类型
.SetEase(Ease.InOutQuad)// 设置延迟
.SetDelay(0.5f)// 设置循环
.SetLoops(3, LoopType.Yoyo)// 设置自动杀灭
.SetAutoKill(false)// 设置速度而非持续时间
.SetSpeedBased()
动画控制方法
Tween myTween = transform.DOMoveX(5, 1f);// 暂停/继续
myTween.Pause();
myTween.Play();// 重启
myTween.Restart();// 完成动画
myTween.Complete();// 杀灭动画
myTween.Kill();
4. 高级功能
序列动画
Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(5, 1f));
mySequence.Append(transform.DORotate(new Vector3(0, 90, 0), 1f));
mySequence.PrependInterval(0.5f); // 在序列开始前添加延迟
mySequence.Insert(0.5f, transform.DOScale(2, 1f)); // 在0.5秒时插入动画
回调函数
transform.DOMoveX(5, 1f).OnStart(() => Debug.Log("动画开始")).OnComplete(() => Debug.Log("动画完成")).OnUpdate(() => Debug.Log("动画更新中"));
路径动画
Vector3[] path = new Vector3[] { new Vector3(0, 0, 0),new Vector3(1, 1, 0),new Vector3(2, 0, 0)
};transform.DOPath(path, 1f, PathType.CatmullRom).SetOptions(true) // 闭合路径.SetLookAt(0.01f); // 使对象朝向移动方向
5. 性能优化
-
重用 Tween:使用
SetAutoKill(false)
和Restart()
重用 Tween -
使用静态方法:
DOTween.To()
比扩展方法更高效 -
合理使用 Update 类型:根据需求设置
SetUpdate(true)
使用非时间缩放更新 -
批量杀灭:使用
DOTween.KillAll()
或DOTween.Clear()
谨慎清理
6. 注意事项
-
在对象销毁时,相关的 Tween 会自动杀灭
-
可以使用
DOTween.defaultAutoPlay = AutoPlay.None;
设置默认不自动播放 -
通过
DOTween.SetTweensCapacity(500, 50);
预设容量提高性能
DOTween 的强大之处在于它的简洁性和灵活性,几乎可以为 Unity 中的任何属性创建动画效果。通过组合基本动画和序列,可以创建出复杂的动画效果而无需编写大量代码。