DOTween是一款高效、轻量的Unity动画插件,支持流畅的补间动画和序列控制。以下是核心功能详解:
1. 安装与初始化
- 安装:通过Unity Asset Store搜索"DOTween"导入,或从官网下载
.unitypackage
。 - 初始化:在脚本中引入命名空间并初始化:
using DG.Tweening; // 引入命名空间 void Start() { DOTween.Init(); // 初始化DOTween }
2. 基础动画(Tweener)
- 位移动画:
DOMove
Transform cube = GameObject.Find("Cube").transform; cube.DOMove(new Vector3(5, 0, 0), 2f); // 2秒内移动到(5,0,0)
- 旋转动画:
DORotate
cube.DORotate(new Vector3(0, 180, 0), 1.5f); // 1.5秒旋转180度
- 缩放动画:
DOScale
cube.DOScale(new Vector3(2, 2, 2), 1f); // 1秒放大2倍
3. 动画序列(Sequence)
按顺序或并行执行多个动画:
Sequence seq = DOTween.Sequence();
seq.Append(cube.DOMoveX(5, 2f)); // 步骤1:水平移动
seq.Append(cube.DORotate(Vector3.up * 90, 1f)); // 步骤2:旋转
seq.PrependInterval(0.5f); // 开始前延迟0.5秒
seq.Play(); // 播放序列
4. 动画参数控制
- 缓动函数:指定动画加速度曲线(Easing)
cube.DOMoveY(3, 1f).SetEase(Ease.OutBounce); // 弹跳效果
- 循环与延迟
cube.DOScale(Vector3.one * 0.5f, 1f) .SetLoops(3, LoopType.Yoyo) // 循环3次(往返) .SetDelay(1f); // 延迟1秒启动
5. 回调函数
在动画关键节点触发事件:
cube.DOMoveX(10, 3f)
.OnStart(() => Debug.Log("动画开始"))
.OnComplete(() => Debug.Log("动画结束"));
6. 路径动画(DOPath)
沿自定义路径移动:
Vector3[] path = { new Vector3(0,0,0), new Vector3(2,1,0), new Vector3(4,0,0) };
cube.DOPath(path, 3f, PathType.CatmullRom); // 3秒沿曲线路径移动
7. 性能优化技巧
- 对象池重用:DOTween自动管理Tween对象池,无需手动销毁。
- 停止动画:
Kill()
终止指定动画:Tween moveTween = cube.DOMoveX(5, 2f); moveTween.Kill(); // 立即停止动画
- 全局设置:控制所有动画的默认行为:
DOTween.SetTweensCapacity(200, 50); // 设置最大Tween数
8. 常见问题
- 动画不生效:检查对象是否被销毁、初始位置是否正确。
- 性能卡顿:减少同时运行的复杂动画数量,避免频繁创建Tween。
- 版本兼容:确保DOTween版本与Unity兼容(支持Unity 2017.1+)。
官方文档:DOTween Documentation
通过灵活组合上述功能,可实现复杂的UI动效、场景过渡和角色动画!