【Unity】DOTween的常用函数解释

发布于:2025-05-21 ⋅ 阅读:(27) ⋅ 点赞:(0)

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


网站公告

今日签到

点亮在社区的每一天
去签到