Unity:DOTween 动画插件快速上手

DOTween是一个常用的Unity动画插件,提供便捷的接口实现各种动画效果,如移动、旋转和颜色变化。通过DOTween.To方法可以控制对象属性的变化,Transform.DoXXX系列方法则用于实现特定的动画效果,如移动、缩放和旋转。此外,DOTween支持序列播放、事件响应以及控制和协程功能,增强了在游戏开发中的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简介

DOTween是最常用的动画插件之一,比使用Unity自带脚本写动画,方便很多,可以快速的通过DOTween提供的接口实现所要的动画。
DOTween商城地址:http://dotween.demigiant.com
可以直接放在package里面或者工程的plugins里面,如果是pkg包直接导入就行。

2、引用

使用前需要添加引用

using DG.Tweening;

基本写法看上去是这样的:
DOTween.XX(各种参数).循环(参数).等待(参数).变化(参数).事件响应(响应函数)…;
unity属性.DO动作(各种参数).循环(参数).等待(参数).变化(参数).事件响应(响应函数)

3、 DOTween.To

DOTween通用的方法DOTween.To,可以控制移动、旋转、颜色变化,大多数动画使用该方法解决。
常见方法:

public static Tweener To(DOGetter<long> getter, DOSetter<long> setter, long endValue, float duration);

getter:代理,初始值,
setter:代理,变化的值
endValue:结束的目标值
duration:变化的时长
举例,我们可以控制X,Y距离变化的动画:

DOTween.To(() => shadow.effectDistance.x, _ => shadow.effectDistance = new
                Vector2(_, shadow.effectDistance.y), info.shade.x, 15f);
DOTween.To(() => shadow.effectDistance.y, _ => shadow.effectDistance = new
                Vector2(shadow.effectDistance.y, _), info.shade.y, 15f);

实现延迟触发效果:

/// <summary>
/// 延迟时间触发
/// </summary>
/// <param name="delayedTimer"></param>
/// <param name="callback"></param>
public void DOTweenToDelay(float delayedTimer, Action callback)
{
    float timer = 0;
    //DOTwwen.To()中参数:前两个参数是固定写法,第三个是到达的最终值,第四个是渐变过程所用的时间
    Tween t = DOTween.To(() => timer, x => timer = x, 1, delayedTimer)
                  .OnStepComplete(() =>
                  {
                      callback?.Invoke();
                  });
}

在这里插入图片描述

4、Transform.DoXXX

DOTween结合Unity对象应用,可以实现DoMove、DORotate等效果的动画。

4.1 常见的运用

target:当前预制体
targetV:移动或者旋转目标的位置
scale:缩放的大小目标值
clip.duration:移动的时长
实现移动效果:

target.DOLocalMove(targetV, clip.duration).From(true)

实现缩放效果:

target.DOScale(scale, clip.duration).From(true)

实现旋转效果:

target.DORotate(targetV, clip.duration).From(true)

在这里插入图片描述transform.DOPath可以设置一个路径,让游戏对象在路径上移动。如果免费的路径编辑器没有,可以用LineRenderer的编辑来代替。
text.DOText可以让文本框里面的文字逐字显示,NPC对话内容常用到。但是,不支持Text Mesh Pro。所以推荐使用DOTween.To来代替

4.2 后缀方法

transform.DoXXX方法都包含很多简易后缀方法,我们可以通过这些方法设置循环、反转、等待功能。

target.DOLocalMove(targetV, clip.duration).SetLoops(2)

在这里插入图片描述

4.3 事件响应

transform.DoXXX动画结束后,还支持结束、开始、暂停等动画事件响应。

target.DOLocalMove(targetV, clip.duration).OnComplete(()=>{}) 

在这里插入图片描述

5、序列

Sequence序列是让一系列的动画顺序执行,参数的话是可以把具体的设置,例如循环,等待,变化啥的变成一个统一的参数,在不同的动画中统一调用。
创建序列:

  Sequence seq = DOTween.Sequence();

可以通过每个动作统一加到一个序列通过间隔的时长进行控制播放。

//clip.startTime停顿的间隔时间
seq.AppendInterval(clip.startTime);
seq.AppendCallback(() =>
{
    Debug.Log($"AppendCallback startTime = {clip.startTime}");
    if (clip.position != Vector3.zero)
    {
        seq.Append(target.DOLocalMove(targetV, clip.duration).From(true));
    }
    if (clip.rotate != Vector3.zero)
    {
       seq.Append(target.DORotate(targetV, clip.duration).From(true));
    }
    if (clip.scale != 0)
    {
        seq.Append(target.DOScale(scale, clip.duration).From(true));
    }
});

在这里插入图片描述

6、控制、协程和异步

DOTween还提供动画控制、携程和异步等功能

DOTween.PauseAll();
DOTween.PlayAll();

在这里插入图片描述
参考文档:https://www.bilibili.com/read/cv16757383/

DOTween是一种快速,高效,完全类型安全的面向对象的动画引擎的团结,以优化C#用户,免费和开源,用吨的先进功能。 DOTweenUnity版本2018至3.5兼容。 适用于: Win,Mac,Linux,Unity WebPlayer,WebGL,iOS,Android, Windows Phone,Windows Store,PS Vita(PSM),PS4,Xbox One,Nintendo Switch +更多(没有测试其他平台但它应该工作除了使用Flash导出以外的所有地方。 特征 速度和效率 不仅非常快,而且非常高效:所有内容都被缓存并重复使用,以避免无用的GC分配。 智能感知和类型安全 所有代码都包含XML注释,并组织起来以充分利用IntelliSense。此外,一切都是类型安全的:任何地方都没有字符串。 快捷键 直接扩展普通对象的快捷方式扩展: // Move a transform to position 1,2,3 in 1 second transform.DOMove(new Vector3(1,2,3), 1); // Scale the Y of a transform to 3 in 1 second transform.DOScaleY(3, 1); // Pause a transform's tween transform.DOPause(); 非常准确 时间以非常精确的方式计算。这意味着每个1000秒的循环将会以1000秒的单圈循环播放。 逻辑和易于使用的API 提高效率,直观性和易用性的API。 动画(几乎) DOTween可以动画每个数字值,也可以是一些非数字值。它甚至可以对字符串进行动画处理,支持富文本。 捕捉,轴约束和其他选项 选择有关如何补间值的其他选项,例如捕捉(捕捉值到整数)或轴约束。 完全控制 播放,暂停,倒带,重新启动,完成,转到和吨其他有用的方法来控制你的补间。 分组 将补间组合到序列中以创建复杂的动画(不需要在一个,呃,序列中:它们也可以相互重叠)。 可混合的补间 由于强大的DOBlendable快捷方式,一些补间可以实时混合。 路径 沿线性和弯曲路径设置动画,并为旅行社的方向提供额外选项。 播放时更改值和持续时间 即使在播放时,也可以随时更改补间的开始/结束值或持续时间。 安全模式 激活可选的安全模式,让DOTween处理意外事件,例如播放时销毁的补间目标。 协程的产量 在协同程序中使用的各种“WaitFor ...”方法,允许您等待补间完成,终止或启动,或者让它到达给定的位置或循环。 多种旋转模式 轮换补间可以采用最短路径,完整路径,也可以使用本地或世界轴。 共享方法 它是Tweener还是序列?谁在乎?它们都从Tween继承,因此您可以以相同的方式存储它们并控制它们。 插件 DOTween在构建时考虑了可扩展的体系结构,允许您将自己的补间插件创建为单独的文件。 附加功能 额外的虚拟方法,可以在给定的延迟后调用函数。 所有的基础知识 回调,循环,轻松(包括AnimationCurves和自定义缓动功能),SpeedBased和许多其他补间选项。此外,更新类型的选择:常规,固定,延迟,加上选项,使其与timeScale无关。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾荒的小海螺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值