Unity中DOTween插件用法
DOTween是Unity中一个强大且高效的动画插件,以下是其实践和用法
基础用法
- 基本补间动画
// 移动
transform.DOMove(new Vector3(2, 2, 2), 1f);
// 缩放
transform.DOScale(new Vector3(2, 2, 2), 1f);
// 旋转
transform.DORotate(new Vector3(0, 90, 0), 1f);
- 链式调用
transform.DOMoveX(5, 1f)
.SetDelay(0.5f)
.SetEase(Ease.OutBounce)
.OnComplete(() => Debug.Log("移动完成"));
高级技巧
- 序列动画
Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(5, 1f));
mySequence.Append(transform.DORotate(new Vector3(0, 90, 0), 0.5f));
mySequence.PrependInterval(1f); // 在序列开始前添加延迟
- 路径动画
Vector3[] path = new Vector3[] {
new Vector3(0, 0, 0),
new Vector3(2, 2, 0),
new Vector3(4, 0, 0)
};
transform.DOPath(path, 2f, PathType.CatmullRom);
- 材质属性动画
material.DOColor(Color.red, "_Color", 1f);
material.DOFloat(0.5f, "_Glossiness", 1f);
性能优化
- 对象池
// 初始化时设置DOTween的缓存池大小
DOTween.SetTweensCapacity(200, 50);
- 重用补间动画
Tween myTween = transform.DOMoveX(5, 1f).Pause();
// 需要时重用
myTween.Restart();
- 使用From方法
// 从目标位置开始动画到当前位置
transform.DOMoveX(5, 1f).From();
实用功能
- 回调函数
transform.DOMoveX(5, 1f)
.OnStart(() => Debug.Log("动画开始"))
.OnUpdate(() => Debug.Log("动画进行中"))
.OnComplete(() => Debug.Log("动画完成"));
- 延迟执行
DOVirtual.DelayedCall(2f, () => {
// 2秒后执行
});
- 数字变化动画
int score = 0;
DOTween.To(() => score, x => score = x, 100, 1f)
.OnUpdate(() => scoreText.text = score.ToString());
注意事项
- 在对象销毁时记得调用
Kill()
防止内存泄漏
void OnDestroy() {
transform.DOKill();
}
-
对于UI元素,使用专用方法如
DOFade()
,DOFillAmount()
等 -
在场景切换时可以考虑调用
DOTween.Clear()
清除所有补间
DOTween功能强大且灵活,合理使用可以大大简化Unity中的动画实现,同时保持高性能。