What are your feelings

  • Happy
  • Normal
  • Sad

DOTween API 完整指南

DOTween API 完整指南:

一、什么是 DOTween?

DOTween 是一个高效、轻量级的 Unity 动画引擎,专门用于简化补间动画的创建和管理。它支持各种动画效果,如移动、旋转、缩放、渐变和数值变化等。


二、DOTween 安装

  1. Unity Package Manager 安装

    • 在 Unity 中,打开 Window > Package Manager

    • 选择“Add package from git URL”,输入以下 URL:

      https://github.com/Demigiant/dotween
  2. 直接导入 .unitypackage 文件

    • 前往 DOTween 官网 下载最新的 .unitypackage 文件。

    • 在 Unity 中,Assets > Import Package > Custom Package,选择 .unitypackage 文件导入。


三、核心 API 使用指南

1. 基本动画类型

方法 说明 示例
DOMove 将物体移动到目标位置 transform.DOMove(new Vector3(0, 5, 0), 2f);
DORotate 旋转物体 transform.DORotate(new Vector3(0, 180, 0), 1f);
DOScale 缩放物体 transform.DOScale(new Vector3(2, 2, 2), 1f);
DOColor 更改颜色(适用于 SpriteRenderer、Image) spriteRenderer.DOColor(Color.red, 1f);
DOFade 修改透明度 image.DOFade(0, 2f);
DOText 修改 Text 组件的文本 text.DOText("新文本内容", 2f);
DOPath 沿路径移动物体 transform.DOPath(new Vector3[]{point1, point2}, 2f);
DOJump 模拟跳跃运动 transform.DOJump(new Vector3(2, 3, 0), 2, 2, 1f);

四、补间动画的控制

1. 动画的链式调用

  • 描述:链式调用可以将多个动画效果连接起来。

  • 示例

    transform.DOMove(new Vector3(0, 3, 0), 1f)
            .SetEase(Ease.InOutQuad)
            .SetLoops(2, LoopType.Yoyo)
            .OnComplete(() => Debug.Log("动画完成"));

2. 动画的控制方法

方法 说明
Play() 播放补间动画
Pause() 暂停补间动画
Restart() 重新开始补间动画
Kill() 停止并销毁补间动画
Rewind() 倒带补间动画
Complete() 立即完成补间动画
TogglePause() 切换暂停和播放状态

五、动画的高级配置

1. Ease 曲线

  • 描述:决定动画的变化曲线。

  • 常见类型

    类型 说明
    Ease.Linear 线性运动
    Ease.InOutQuad 平滑的加速和减速
    Ease.InBounce 反弹进入
    Ease.OutBounce 反弹退出
  • 示例

    transform.DOMove(new Vector3(0, 5, 0), 2f).SetEase(Ease.InOutBack);

2. Loop 循环

  • 循环类型

    类型 说明
    LoopType.Restart 重头开始动画
    LoopType.Yoyo 往返运动
    LoopType.Incremental 递增运动
  • 示例

    transform.DOMove(new Vector3(0, 5, 0), 2f).SetLoops(3, LoopType.Yoyo);

六、动画事件

方法 说明
OnComplete() 动画完成时调用
OnKill() 动画被销毁时调用
OnPause() 动画暂停时调用
OnPlay() 动画播放时调用
OnUpdate() 每帧调用
  • 示例

    transform.DOMove(new Vector3(0, 3, 0), 2f)
            .OnStart(() => Debug.Log("动画开始"))
            .OnComplete(() => Debug.Log("动画完成"));

七、DOTween Pro 专属功能

1. DOTween Pro 的额外功能

  • Visual Path Editor:可视化路径编辑器。

  • Unity Timeline 支持:在 Unity 的 Timeline 中使用 DOTween。

  • TextMesh Pro 支持:为 TextMesh Pro 组件添加动画支持。


八、常见用法示例

1. 物体循环移动

transform.DOMove(new Vector3(3, 0, 0), 2f)
        .SetLoops(-1, LoopType.Yoyo);

2. 透明度渐变

image.DOFade(0, 2f)
    .SetEase(Ease.InOutSine);

3. 连续的补间动画

transform.DOMove(new Vector3(0, 3, 0), 1f)
        .OnComplete(() =>
        {
            transform.DORotate(new Vector3(0, 180, 0), 1f);
        });

4. 基于路径的动画

Vector3[] path = new Vector3[] { new Vector3(0, 1, 0), new Vector3(1, 2, 0), new Vector3(2, 1, 0) };
transform.DOPath(path, 2f, PathType.CatmullRom);

九、实用技巧

1. 动画的全局时间缩放

  • 作用:控制所有补间动画的时间流速。

  • 示例

    DOTween.timeScale = 0.5f; // 使所有动画变慢

2. 动画分组控制

  • 作用:对一组补间动画的统一控制。

  • 示例

    Sequence sequence = DOTween.Sequence();
    sequence.Append(transform.DOMove(new Vector3(0, 3, 0), 1f));
    sequence.Join(transform.DOScale(new Vector3(2, 2, 2), 1f));
    sequence.Play();

十、常见问题和解决方法

问题 可能原因 解决方法
动画没有播放 未调用 Play() 确保链式调用了 Play()
动画太快或太慢 TimeScale 值被修改 检查 Time.timeScale
动画不流畅 帧率较低或性能瓶颈 使用“Ease”控制曲线流畅度
动画被意外停止 其他脚本调用 Kill 检查是否调用了 Kill()
索引