Unity:DOTween 动画插件快速上手
创始人
2025-05-30 16:49:03

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 getter, DOSetter setter, long endValue, float duration);

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

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

实现延迟触发效果:

/// 
/// 延迟时间触发
/// 
/// 
/// 
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/

相关内容

热门资讯

玩家必看“新道游牛牛究竟有透视... 您好:新道游牛牛这款游戏可以开挂,确实是有挂的,需要软件加微信【4770480】,很多玩家在新道游牛...
[科技揭秘]“永盈棋牌真的有挂... 您好:永盈棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游戏...
[重磅推荐]“悟空大厅到底有没... 亲:悟空大厅这款游戏是可以开挂的,确实是有挂的,添加客服【3671900】很多玩家在这款游戏中怀疑是...
重大来袭「乐酷炸金花」有没有挂... 您好:乐酷炸金花这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9307068】很多玩家在这款游...
重大通报“微乐陕西麻将其实有挂... 您好:微乐陕西麻将这款游戏可以开挂,确实是有挂的,需要软件加微信【69174242】,很多玩家在微乐...