当前位置: 首页 > news >正文

【Unity】DOTween的常用函数解释

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

相关文章:

  • (一) 本地hadoop虚拟机系统设置
  • 自学嵌入式 day21 - 数据结构 双向链表
  • Keil软件中STM32(ARM)与C51兼容方法
  • STM32--串口函数
  • 优化Hadoop性能:如何修改Block块大小
  • AWS CodePipeline+ Elastic Beanstalk(AWS中国云CI/CD)
  • html+css+js趣味小游戏~记忆卡片配对(附源码)
  • c语言- 如何构建CMake项目(Linux/VSCode)
  • 去中心化算力池:基于IPFS+智能合约的跨校GPU资源共享平台设计
  • 零基础设计模式——创建型模式 - 工厂方法模式
  • 电商运营数据分析指南之流量指标
  • <uniapp><vuex><状态管理>在uniapp中,如何使用vuex实现数据共享与传递?
  • uni-app 中使用 mumu模拟器 进行调试和运行详细教程
  • 青少年编程与数学 02-019 Rust 编程基础 20课题、面向对象
  • idea查看class文件源码
  • Electron+vite+vue3 从0到1搭建项目,开发Win、Mac客户端
  • 青少年编程与数学 02-019 Rust 编程基础 19课题、项目发布
  • CodeBuddy全新升级:体验Craft智能体的对话式编程革命
  • iOS苹果和Android安卓测试APP应用程序的区别差异
  • Java虚拟机 - 程序计数器和虚拟机栈
  • 建立双城双向科创项目孵化机制,2025沪港创新项目评选启动
  • 藤井树与藤井树:岩井俊二式的爱情,情书的三重生命
  • 钟南山谈新冠阳性率升高:可防可治不用慌,高危人群应重点关注
  • 香港新股市场繁荣:恒瑞医药等4公司同时招股,宁德时代今日港交所上市
  • 俄方确认普京与特朗普将于今晚通话
  • 世卫大会拒绝涉台提案,外交部:坚持一个中国原则是人心所向