DOTween插件常用函数解释
1.DOTween.To(通用变化动画)
解释:将某一个值在一定的时间内变化到另一个值(通用的函数),可用于大部分的动画变化
使用示例:
using UnityEngine;
using DG.Tweening;
public class ToTest : MonoBehaviour{//移动public void To(float duration){Vector3 endValue = new Vector3(10, 10, 10); //定义终点值DOTween.To(() => transform.position, //要移动的初始值pos => transform.position = pos, //移动过程的位置插值endValue, //目标值duration //移动耗时(秒)); }
}
2.DOMove(移动动画)
解释:将物体从当前位置移动到目标位置
衍生函数:DOMoveX、DOMoveY、DOMoveZ(将物体从当前位置沿着X/Y/Z方向移动)
使用示例:
using UnityEngine;
using DG.Tweening;
public class MoveTest : MonoBehaviour{public void MoveToTargetPosition(float duration,Vector3 targetPosition){transform.DOMove(targetPosition, //目标位置duration //移动耗时);}
}
3.DOScale(缩放动画)
解释:将物体从当前缩放值变化到目标缩放值
衍生函数:DOScaleX、DOScaleY、DOScaleZ(将物体沿X/Y/Z轴方向缩放)
使用示例:
using UnityEngine;
using DG.Tweening;
public class ScaleTest : MonoBehaviour{//缩放到目标缩放值public void ScaleToTargetScale(float duration,Vector3 targetScale){transform.DOScale(targetScale, //目标缩放值duration //缩放耗时);}//基于当前缩放值按倍率进行缩放public void ScaleToTargetScale(float duration,float scale){transform.DOScale(scale, //缩放倍率(基于当前倍率)duration //缩放耗时);}
}
4.DOJump(跳跃动画)
解释:将物体从当前位置”跳跃“到目标位置
endValue:结束位置,
jumpPower:跳跃的最大高度,
numJumps:跳跃次数,
jumpPower:持续时间,
snapping:只取整数值(默认为false)
using UnityEngine;
using DG.Tweening; // 引入命名空间public class Rotate : MonoBehaviour {void Start() {transform.DOJump(new Vector3(2, 2, 2), //结束位置4, //跳跃最大高度4, //跳跃次数5, //持续时间false //false表示取浮点数计算,true表示取整数计算);}
}
5.DOShake(摇晃动画)
解释:模拟随机抖动的效果,无方向性
5.1 位置摇晃
-
DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool snapping, bool fadeOut)
5.2 旋转摇晃
-
DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)
5.3 缩放摇晃
-
DOShakeScale(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)
5.4 参数解释
以下按形参的顺序解释:
duration:持续时间,
strength:晃动幅度(默认为float:1),
vibrato:晃动的次数(默认为10),
randomness:随机晃动角度(0-180,默认为90),
snapping:只取整数值(默认为false),
fadeOut:渐出效果(默认为true)
5.5 示例
using UnityEngine;
using DG.Tweening; // 引入命名空间public class Shake : MonoBehaviour {void Start() {transform.DOShakePosition(5);}
}
6.DOPunch(击打动画)
解释:该动画可以在位置、旋转、缩放三种形式上模拟表现被强力击打后的震动,有明确的方向性
6.1 位置击打
-
DOPunchPosition(Vector3 punch, float duration, int vibrato, float elasticity, bool snapping)
6.2 旋转击打
-
DOPunchRotation(Vector3 punch, float duration, int vibrato, float elasticity)
6.3 缩放击打
-
DOPunchScale(Vector3 punch, float duration, int vibrato, float elasticity)
6.4 参数解释
以下形参按顺序解释:
punch:击打方向和力度,
duration:持续时间,
vibrato:晃动的次数(默认为10),
elasticity:弹性系数(默认为1),
snapping:只取整数值(默认为false)
6.5 示例
using UnityEngine;
using DG.Tweening; // 引入命名空间public class Punch : MonoBehaviour {void Start() {transform.DOPunchPosition(new Vector3(2, 2, 2), 5);}
}
7.文字动画
7.1 文字颜色变化
DOColor(Color to, float duration)
-
to:当前文字当前颜色要变化到的目标颜色
-
duration:变化过程的持续时间
7.2 文字透明度变化
DOFade(float to, float duration)
-
to:数值范围是0~1,表示文字当前不透明度要变化到的目标不透明度
-
duration:变化过程的持续时间
7.3 打字机动画
DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)
-
to:要逐个文字打出的文本
-
duration:持续时间
-
richTextEnabled:是否支持富文本(默认为True)
-
scrambleMode:乱码效果模式(默认为不启用乱码)
-
scrambleChars:乱码字符(默认为null)
枚举值 | 说明 |
---|---|
ScrambleMode.None | 默认值,不启用乱码,直接逐字显示原文本。 |
ScrambleMode.All | 所有未显示的字符替换为完全随机字符(如字母、数字、符号)。 |
ScrambleMode.Uppercase | 用随机大写字母作为乱码(如A、X、K )。 |
ScrambleMode.Lowercase | 用随机小写字母作为乱码(如b、q、m )。 |
ScrambleMode.Numerals | 用随机数字作为乱码(如3、9、1 )。 |
ScrambleMode.Custom | 用自定义字符作为乱码(需通过 scrambleChars 参数指定)。 |
8.动画序列(重点)
允许你将多个动画组合在一起,以特定的顺序依次执行。适用于需要在特定时间顺序内执行多个动画的场景,例如:角色的移动、跳跃和旋转等多个动作,可以使用序列来组织这些动画。
8.1 顺序动画(Append)
说明:让多个动画按照在序列中的顺序逐个执行
using DG.Tweening;
public class SequenceTest : MonoBehaviour{// 创建一个空序列Sequence sequence = DOTween.Sequence();// 添加动画到序列(默认按顺序执行)sequence.Append(transform.DOMoveX(5, 1f)); // 第一步:向右移动sequence.Append(transform.DORotate(new Vector3(0, 180, 0), 0.5f)); // 第二步:旋转sequence.Append(transform.DOScale(Vector3.zero, 1f)); // 第三步:缩小消失// 播放序列sequence.Play();
}
8.2 并行动画(Join)
说明:让多个动画同时进行。这个特别适合一些需要同时进行的行为,比如某个角色一边移动一边跳跃。
Sequence sequence = DOTween.Sequence();
// 第一步:移动和旋转同时进行
sequence.Append(transform.DOMoveX(5, 1f));
sequence.Join(transform.DORotate(new Vector3(0, 180, 0), 1f)); // 与移动同步进行
// 第二步:缩小
sequence.Append(transform.DOScale(Vector3.zero, 0.5f));
sequence.Play();
8.3 动画序列的其它操作
Sequence loopTween = DOTween.Sequence();
将一个新的动画添加到序列的末尾。
loopTween.Append(Tween tween);
将一个新的动画添加到序列的开头。
loopTween.Prepend(Tween tween);
将一个新的动画添加到序列中,与当前动画同时播放。
loopTween.Join(Tween tween);
在指定时间插入一个新的动画。
loopTween.Insert(float time, Tween tween);
在序列中添加一个间隔(不执行任何动画的时间)。
loopTween.AppendInterval(float interval):
8.3 暂停、停止、重播、播放序列动画
//播放序列动画
loopTween.Play();
//暂停序列动画
loopTween.Pause();
//停止序列动画
loopTween.Kill();
//重播序列动画
loopTween.Restart();
9.动画缓动(SetEase)
9.1 预设动画缓动表
DOTween为开发者提供了大量的预设好的动画缓动,可以赋予动画不同的运动效果。
类别 | Ease类型 | 效果描述 | 适用场景 |
---|---|---|---|
线性 | Linear | 匀速运动,无加速或减速 | 需要完全均匀的运动 |
平滑缓入 | InSine | 开始时缓慢,逐渐加速(正弦曲线) | 自然感强的启动动作 |
InQuad | 缓入(二次方曲线,比InSine更明显的加速) | 快速启动的动画 | |
InCubic | 缓入(三次方曲线,加速更强) | 强调爆发力效果 | |
InQuart | 缓入(四次方曲线,极强加速) | 极快速的开始 | |
InQuint | 缓入(五次方曲线,最强加速) | 夸张的加速效果 | |
InExpo | 缓入(指数曲线,初始几乎静止,突然加速) | 科技感或突然出现的效果 | |
InCirc | 缓入(圆形曲线,初始慢,后端急剧加速) | 弹射或冲刺效果 | |
InElastic | 缓入弹性效果(带有回弹的振荡) | 弹性物体(如弹簧) | |
InBack | 缓入回拉效果(先轻微反向,再加速) | 卡通风格的预备动作 | |
平滑缓出 | OutSine | 结束时缓慢减速(正弦曲线) | 自然停止的动作 |
OutQuad | 缓出(二次方曲线,明显减速) | 快速停止的动画 | |
OutCubic | 缓出(三次方曲线,减速更强) | 强调缓冲效果 | |
OutQuart | 缓出(四次方曲线,极强减速) | 突然刹车效果 | |
OutQuint | 缓出(五次方曲线,最强减速) | 夸张的缓冲效果 | |
OutExpo | 缓出(指数曲线,运动到终点前几乎无减速,突然停止) | 瞬间停止的科技效果 | |
OutCirc | 缓出(圆形曲线,前端快速,末端急剧减速) | 撞击或急停效果 | |
OutElastic | 缓出弹性效果(到达终点后回弹振荡) | 弹性碰撞(如球落地) | |
OutBack | 缓出回弹效果(超过终点后回拉) | 卡通风格的过冲效果 | |
平滑缓入缓出 | InOutSine | 开始和结束均平滑(正弦曲线) | 自然的循环动作 |
InOutQuad | 对称加速和减速(二次方曲线) | 标准平滑过渡 | |
InOutCubic | 更强的平滑加速和减速(三次方曲线) | 强调中间速度变化 | |
InOutQuart | 极强平滑加速和减速(四次方曲线) | 快速启动和停止 | |
InOutQuint | 最强平滑加速和减速(五次方曲线) | 夸张的平滑效果 | |
InOutExpo | 几乎瞬间加速和减速(指数曲线) | 科技感开关效果 | |
InOutCirc | 前后端急剧变化(圆形曲线) | 模拟跳跃或弹跳 | |
InOutElastic | 中间带有弹性振荡 | 弹性物体的完整动作 | |
InOutBack | 轻微过冲和回拉 | 卡通风格的完整动作 | |
特殊效果 | Flash | 自定义闪烁效果(需设置振幅和频率) | 闪烁、震动 |
FlashIn/FlashOut | 快速闪烁缓入或缓出 | UI提示或警告效果 | |
Shake | 随机震动(需设置强度、频率等) | 相机抖动、物体震动 | |
自定义 | AnimationCurve | 使用Unity的AnimationCurve 自定义任意曲线 | 需要完全自定义的运动 |
EaseFunction | 通过代码传入自定义函数 | 复杂数学曲线或特殊算法 |
9.2 使用示例
transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.OutBack);
transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.InSine);
10.动画回调函数
说明:动画回调函数类似于Unity的生命周期函数,它允许你在动画的生命周期内执行一些代码。
回调函数名 | 解释 | 示例 |
---|---|---|
.OnStart(Action onStart) | 在动画开始时执行的回调 | tween.OnStart(() => Debug.Log("动画开始")); |
.OnPlay(Action onPlay) | 在动画播放时执行的回调 | tween.OnPlay(() => Debug.Log("动画播放")); |
.OnUpdate(Action onUpdate) | 在每一帧更新时执行的回调 | tween.OnUpdate(() => Debug.Log("动画更新")); |
.OnComplete(Action onComplete) | 在动画完成时执行的回调 | tween.OnComplete(() => Debug.Log("动画完成")); |
.OnKill(Action onKill) | 在动画被杀死时执行的回调 | tween.OnKill(() => Debug.Log("动画被杀死")); |
11.Set相关函数
函数名 | 解释 | 示例 |
---|---|---|
.SetDelay(float delay) | 设置动画开始前的延迟时间(以秒为单位) | tween.SetDelay(1f); // 延迟1秒后开始 |
.SetEase(Ease easeType) | 设置动画的曲线类型(如线性、加速、减速等,类似设置PPT动画的出现效果)。 | tween.SetEase(Ease.InOutQuad); // 使用 InOutQuad 缓动 |
.SetLoops(int loops, LoopType loopType) | 设置动画的循环次数和循环类型(如循环、反向循环等)。 | tween.SetLoops(3, LoopType.Yoyo); // 循环3次,反向循环 |
.SetAutoKill(bool autoKill) | 设置动画完成后是否自动销毁。 | tween.SetAutoKill(false); // 动画完成后不自动销毁 |
.SetId(object id) | 设置动画的 ID,以便后续查找和管理。 | tween.SetId("myTween"); // 设置 ID 为 "myTween" |
.SetUpdate(bool isIndependent): | 设置动画是否独立于时间更新(用于在时间暂停时仍然更新)。 | tween.SetUpdate(true); // 在时间暂停时仍然更新 |
12.查阅官方文档
除了上述的内容,你还可以查阅DOTween的官方文档,里面提供了插件所包含的全部API
文档连接: DOTween - Documentation