Unity DoTween笔记

 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. 性能优化

  1. 重用 Tween:使用 SetAutoKill(false) 和 Restart() 重用 Tween

  2. 使用静态方法DOTween.To() 比扩展方法更高效

  3. 合理使用 Update 类型:根据需求设置 SetUpdate(true) 使用非时间缩放更新

  4. 批量杀灭:使用 DOTween.KillAll() 或 DOTween.Clear() 谨慎清理

6. 注意事项

  1. 在对象销毁时,相关的 Tween 会自动杀灭

  2. 可以使用 DOTween.defaultAutoPlay = AutoPlay.None; 设置默认不自动播放

  3. 通过 DOTween.SetTweensCapacity(500, 50); 预设容量提高性能

DOTween 的强大之处在于它的简洁性和灵活性,几乎可以为 Unity 中的任何属性创建动画效果。通过组合基本动画和序列,可以创建出复杂的动画效果而无需编写大量代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值