DoTween插件 API 总结
admin
2024-05-08 05:19:11
0

DoTwwen 插件

Tween 一般认为是补间,即补间动画。

命名空间

using DG.Tweening;

说明

Tweener: 补间,控制变量并生成动画

Sequence: 序列,控制多个补间作为组来处理

Tween: 通用词,表示补间与序列。

Nested Tween: 嵌套补间,序列中包含的补间。

名称前缀

DO: 所有快速实现一些补间效果的前缀

Set: 对当前效果进行设置。

On: 一系列的列回调。

DOTween 的 初始化

第一次调用 DoTween 时使用默认值自动初始化自身。

如果希望自己去初始化 DoTween 的设置的话,可以使用 DOTween.Init() 这个静态方法。同时可以使用DOTween的全局设置对其进行调整。我们还可以使用 DOTween.SetTweensCapacity

//方法签名
static DOTween.Init(bool recyleAllByDefault = false, bool useSafeMode = true, LogBehaviour logBehaiour = LogBehaiour.ErrorsOnly);DOTween.Init()
DOTween.Init(true, true, LogBehaviour.Verbose).SetCapacity(200, 10);

Tweener

Tweener 被认为是 DOTween 的基本工作单元。将值或属性进行动画处理,使其可以平滑的改变。

创建 Tweener 的三种方法、

  • 普通方法

与快捷方法一样,通用方法具有 From 替代版本。只需将一个From链接到一个Tweener,使该Tweener表现为 From 而不是 To。

static DOTween.To(getter, setter, to, float duration) 
/*
getter - 委托,将属性值给 Tween, 如:() => myValuesetter - 委托,属性值的设置,如: value => myValue = valueto - 最终值duration - 持续时间
*///例子
DOTween.To(() => myVector, x => myVector = x, new Vector3(3, 4, 5), 1f);
DOTween.To(() => myFloat, x => myFloat = x, 52f, 1f);
  • 快捷方法 (常用方法

DOTween 包含的一些 Unity 对象的快捷方法,如 Transform,Rigidbody,Material 等,你可以直接使用这些对象的扩展 Tween 方法。

DOTween 的快捷方法都有一个 From 的替代版本,这样表现出来的就是 From 而不是 To 的形式。

//举例
transform.DOMove(new Vector3(3, 4, 5), 1);
rigidbody.DOMove(new Vector3(3, 4, 5), 1);
material.DOColor(Color.green, 1);transform.DOMove(new Vector3(3, 4, 5), 1).From();
rigidbody.DOMove(new Vector3(3, 4, 5), 1).From();
material.DOColor(Color.green, 1).From();

快捷方法本质上就是一个 To 的方法,它只不过对 Unity 对象进行了封装,可以方便的使用对于的组件的 Tween 方法。本质上就是对其进行扩展方法。

  • 其他通用方法

这些是允许以特定方式在值之间传递的其他通用方法。

这些也有FROM替代版本,除非另有说明。只需将一个From链接到一个Tweener,使该Tweener表现为From而不是to。

//拍打,回弹
static DOTween.Punch(getter, setter, Vector3 direction, float duration, int vibrato, float elasticity)
//震动
static DOTween.Shake(getter, setter, float duration, float/Vector3 strength, int vibrato, float randomness, bool ignoreZAxis)
static DOTween.ToArray(getter, setter, float to, float duration)
static DOTween.ToAxis(getter, setter, float to, float duration, AxisConstraint axis)
static DOTween.To(setter, float startValue, float endValue, float duration)

Sequence

与 Tweener 类似,但不是去改变值或者属性,而是将 Tweener 或 Sequence 打包成组的形式。

使其可以让多个 Tween 作为组的形式进行使用(类似与 AI BT树中的 Sequence,或者类似与数组)。

Sequence 可以存 Sequence,使得 Tweener 可以进行嵌套使用。

Sequence 方法如下

Append(Tween tween) //添加
AppendCallback(TweenCallback callback) //添加回调
AppendInterval(float interval) //添加间隔时间
Insert(float atPosition, Tween tween) //插入
InsertCallback(float atPosition, TweenCallback callback) //添加间隔回调
Join(Tween tween) //拼接
Prepend(Tween tween) //添加到开头
PrependCallback(TweenCallback callback) //添加开头回调
PrependInterval(float interval) //添加开头间隔时间
//例子
Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45, 1)).Append(transform.DORotate(new Vector3(0,180,0), 1)).PrependInterval(1).Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));

Setting

DOTween 的一些设置

Global Setting

static LogBehaviour DOTween.logBehaviour
static bool DOTween.maxSmoothUnscaledTime
static bool DOTween.nestedTweenFailureBehaviour
static bool DOTween.onWillLog
static bool DOTween.showUnityEditorReport
static float DOTween.timeScale
static float DOTween.unscaledTimeScale
static bool DOTween.useSafeMode
static bool DOTween.useSmoothDeltaTime
static DOTween.SetTweensCapacity(int maxTweeners, int maxSequences)Settings applied to all newly created tweens
static bool DOTween.defaultAutoKill
static AutoPlay DOTween.defaultAutoPlay
static float DOTween.defaultEaseOvershootOrAmplitude
static float DOTween.defaultEasePeriod
static Ease DOTween.defaultEaseType
static LoopType DOTween.defaultLoopType
static bool DOTween.defaultRecyclable
static bool DOTween.defaultTimeScaleIndependent
static UpdateType DOTween.defaultUpdateType

Tween And Sequence Setting

float timeScale;SetAs(Tween tween \ TweenParams tweenParams) //设置对应的参数
SetAutoKill(bool autoKillOnCompletion = true)
SetEase(Ease easeType \ AnimationCurve animCurve \ EaseFunction customEase) //设置插值曲线
SetId(object id) //设置ID
SetInverted() //反着执行,有点类似与 From
SetLink(GameObject target, LinkBehaviour linkBehaviour = LinkBehaviour.KillOnDestroy)
SetLoops(int loops, LoopType loopType = LoopType.Restart) //将循环设置为-1将使tween循环无限。
SetRecyclable(bool recyclable) //可回收
SetRelative(bool isRelative = true) //增量,在原有数值的基础上做加法
SetTarget(object target) //设置目标
SetUpdate(UpdateType updateType, bool isIndependentUpdate = false) //更新帧类型//Chained callbacks 设置回调
OnComplete(TweenCallback callback)
OnKill(TweenCallback callback)
OnPlay(TweenCallback callback)
OnPause(TweenCallback callback)
OnRewind(TweenCallback callback)
OnStart(TweenCallback callback)
OnStepComplete(TweenCallback callback)
OnUpdate(TweenCallback callback)
OnWaypointChange(TweenCallback callback)

Specific Setting

From(bool isRelative = false)
From(T fromValue, bool setImmediately = true, bool isRelative = false)
SetDelay(float delay)
SetDelay(float delay, bool asPrependedIntervalIfSequence)
SetSpeedBased(bool isSpeedBased = true) //从基于时间改为基于速度(持续时间将表示tween移动的单位/度数x秒)

Options Setting

Color tween ➨ SetOptions(bool alphaOnly)
float tween ➨ SetOptions(bool snapping)
Quaternion tween ➨ SetOptions(bool useShortest360Route)
Rect tween ➨ SetOptions(bool snapping)
String tween ➨ SetOptions(bool richTextEnabled, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)
Vector2/3/4 tween ➨ SetOptions(AxisConstraint constraint, bool snapping)
Vector3Array tween ➨ SetOptions(bool snapping)
//DOPath Specific Options
//约束轴
Path tween ➨ SetOptions(bool closePath, AxisConstraint lockPosition = AxisConstraint.None, AxisConstraint lockRotation = AxisConstraint.None)
//注视
Path tween ➨ SetLookAt(Vector3 lookAtPosition/lookAtTarget/lookAhead, Vector3 forwardDirection, Vector3 up, bool stableZRotation)

Tween Params

储存设置,并应用对于 Tween 中。

// Store settings for an infinite looping tween with elastic ease
TweenParams tParms = new TweenParams().SetLoops(-1).SetEase(Ease.OutElastic);
// Apply them to a couple of tweens
transformA.DOMoveX(15, 1).SetAs(tParms);
transformB.DOMoveY(10, 1).SetAs(tParms);

控制 DOTween

三种方法来控制 Tween

  • Via static methods and filters

DOTween类包含许多允许您控制 tween 的静态方法。

它们都有一个“All”版本(如),适用于所有现有的 tween,还有一个简单的版本,其中包含一个参数,允许您通过tween 的 id 或target过滤操作(id通过 SetId 手动设置,而 target 在通过快捷方式创建tween时自动设置)

静态方法还返回一个int,它表示实际能够执行请求操作的所有tween。

// Pauses all tweens
DOTween.PauseAll();
// Pauses all tweens that have "badoom" as an id
DOTween.Pause("badoom");
// Pauses all tweens that have someTransform as a target
DOTween.Pause(someTransform);
  • Directly from the tween

您可以从tween的引用中调用相同的方法,而不是使用静态方法。

myTween.Pause();
  • From a shortcut-enhanced reference

您可以从快捷方式增强对象调用这些相同的方法。方法名有一个附加前缀 DO

transform.DOPause();

方法

CompleteAll/Complete(bool withCallbacks = false): 发送一个回调到末尾,完成
FlipAll/Flip() 反转
GotoAll/Goto(float to, bool andPlay = false) 指定到某个位置
KillAll/Kill(bool complete = false, params object[] idsOrTargetsToExclude) 回收
PauseAll/Pause() 暂停
PlayAll/Play() 开始
PlayBackwardsAll/PlayBackwards() 往后播放
PlayForwardAll/PlayForward() 往前播放
RestartAll/Restart(bool includeDelay = true, float changeDelayTo = -1) 重新开始
RewindAll/Rewind(bool includeDelay = true) 返回播放
SmoothRewindAll/SmoothRewind() 平滑的返回播放
TogglePauseAll/TogglePause() 如果暂停就播放,如果播放就暂停

Tween Data

Static methods (DOTween)static List PausedTweens()
static List PlayingTweens()
static List TweensById(object id, bool playingOnly = false) //获得动画 通过 ID
static List TweensByTarget(object target, bool playingOnly = false) //获得动画 通过 Target
static bool IsTweening(object idOrTarget, bool alsoCheckIfPlaying = false) //是否正在运行
static int TotalActiveSequences()
static int TotalActiveTweens()
static int TotalActiveTweeners()
static int TotalPlayingTweens()//是否有动画运行
static int TotalTweensById()
//Instance methods (Tween/Tweener/Sequence)float fullPosition //设置时间,指定对应时间
int CompletedLoops() //完成循环的次数
float Delay() //获得延迟时间
float Duration(bool includeLoops = true) //获得持续时间(是否包含循环)
float Elapsed(bool includeLoops = true) //已执行的时间(是否包含循环)
float ElapsedDirectionalPercentage() //已执行的时间(归一化)
float ElapsedPercentage(bool includeLoops = true) //已执行的百分比
bool IsActive()
bool IsBackwards()
bool IsComplete()
bool IsInitialized()
bool IsPlaying()
int Loops() //循环次数//Instance methods ➨ Path tweens
Vector3 PathGetPoint(float pathPercentage)
Vector3[] PathGetDrawPoints(int subdivisionsXSegment = 10)
float PathLength()

协程 和 Task

//Coroutines
WaitForCompletion() //等待完成
WaitForElapsedLoops(int elapsedLoops)  //等待完成循环次数
WaitForKill() //等待销毁(回收)
WaitForPosition(float position) //等待运行时间多少秒后
WaitForRewind() //等待执行 rewind 时
WaitForStart() //等待重新执行//Task
AsyncWaitForCompletion()
AsyncWaitForElapsedLoops(int elapsedLoops)
AsyncWaitForKill()
AsyncWaitForPosition(float position)
AsyncWaitForRewind()
AsyncWaitForStart()

组件快捷方法

Transform

//Move
DOMove(Vector3 to, float duration, bool snapping)
DOMoveX/DOMoveY/DOMoveZ(float to, float duration, bool snapping)
DOLocalMove(Vector3 to, float duration, bool snapping)
DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ(float to, float duration, bool snapping)
//Rotation
DORotate(Vector3 to, float duration, RotateMode mode)
DORotateQuaternion(Quaternion to, float duration)
DOLocalRotate(Vector3 to, float duration, RotateMode mode)
DOLocalRotateQuaternion(Quaternion to, float duration)
DOLookAt(Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3 up = Vector3.up)
//Sacle
DOScale(float/Vector3 to, float duration)
DOScaleX/DOScaleY/DOScaleZ(float to, float duration)
//Punch
DOPunchPosition(Vector3 punch, float duration, int vibrato, float elasticity, bool snapping)
DOPunchRotation(Vector3 punch, float duration, int vibrato, float elasticity)
DOPunchScale(Vector3 punch, float duration, int vibrato, float elasticity)
//Shake
DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool snapping, bool fadeOut, ShakeRandomnessMode randomnessMode)
DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut, ShakeRandomnessMode randomnessMode)
DOShakeScale(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut, ShakeRandomnessMode randomnessMode)
//Blend
DOBlendableMoveBy(Vector3 by, float duration, bool snapping)
DOBlendableLocalMoveBy(Vector3 by, float duration, bool snapping)
DOBlendableRotateBy(Vector3 by, float duration, RotateMode mode)
DOBlendableLocalRotateBy(Vector3 by, float duration, RotateMode mode)
DOBlendableScaleBy(Vector3 by, float duration)
//Path
DOPath(Vector3[] waypoints, float duration, PathType pathType = Linear, PathMode pathMode = Full3D, int resolution = 10, Color gizmoColor = null)
DOLocalPath(Vector3[] waypoints, float duration, PathType pathType = Linear, PathMode pathMode = Full3D, int resolution = 10, Color gizmoColor = null)

Material

//Color(Vector4)
DOColor(Color to, float duration)
DOColor(Color to, string property, float duration)
DOColor(Color to, int propertyID, float duration)
//Fade(float)
DOFade(float to, float duration)
DOFade(float to, string property, float duration)
DOFade(float to, int propertyID, float duration)
//Float
DOFloat(float to, string property, float duration)
DOFloat(float to, int propertyID, float duration)
//Gradient
DOGradientColor(Gradient to, float duration)
DOGradientColor(Gradient to, string property, float duration)
DOGradientColor(Gradient to, int propertyID, float duration)
//Offset
DOOffset(Vector2 to, float duration)
DOOffset(Vector2 to, string property, float duration)
DOOffset(Vector2 to, int propertyID, float duration)
//Tiling
DOTiling(Vector2 to, float duration)
DOTiling(Vector2 to, string property, float duration)
DOTiling(Vector2 to, int propertyID, float duration)
//Vector4
DOVector(Vector4 to, string property, float duration)
DOVector(Vector4 to, int propertyID, float duration)
//Blend Color
DOBlendableColor(Color to, float duration)
DOBlendableColor(Color to, string property, float duration)
DOBlendableColor(Color to, int propertyID, float duration)

Camera

DOAspect(float to, float duration)
DOColor(Color to, float duration)
DOFarClipPlane(float to, float duration)
DOFieldOfView(float to, float duration)
DONearClipPlane(float to, float duration)
DOOrthoSize(float to, float duration)
DOPixelRect(Rect to, float duration)
DORect(Rect to, float duration)
//Shake
DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut, ShakeRandomnessMode randomnessMode)
DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut, ShakeRandomnessMode randomnessMode)

Text / TextMeshPro

//Text
DOColor(Color to, float duration)
DOFade(float to, float duration)
DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)
//Blendable tweens
DOBlendableColor(Color to, float duration)//TextMeshPro
DOScale(float to, float duration)
DOColor(Color to, float duration)
DOCounter(int fromValue, int endValue, float duration, bool addThousandsSeparator = true, CultureInfo culture = null)
DOFaceColor(Color to, float duration)
DOFaceFade(float to, float duration)
DOFade(float to, float duration)
DOFontSize(float to, float duration)
DOGlowColor(Color to, float duration)
DOMaxVisibleCharacters(int to, float duration)
DOOutlineColor(Color to, float duration)
DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)

相关内容

热门资讯

【看表情包学Linux】进程地...   🤣 爆笑教程 👉 《看表情包学Linux》👈 猛...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
编译原理陈火旺版第三章课后题答... 下面答案仅供参考! 1.编写一个对于 Pascal 源程序的预处理程序。该程序的作用是...
MacBookPro M2芯片... MacBookPro M2芯片下如何搭建React-Native环境目录软件下载环境配置 目录 写在...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
pyflink学习笔记(六):... 在pyflink学习笔记(一)中简单介绍了table-sql的窗口函数,下面简单介绍下...
创建deployment 创建deployment服务编排-DeploymentDeployment工作负载均衡器介绍Depl...
gma 1.1.4 (2023... 新增   1、地图工具    a. 增加【GetWorldDEMDataSet】。提供了一套 GEO...
AI专业教您保姆级在暗影精灵8... 目录 一、Stable Diffusion介绍    二、Stable Diffusion环境搭建 ...
vue笔记 第一个Vue应用 Document{{content}}{{...
Unity自带类 --- Ti... 1.在Unity中,自己写的类(脚本)的名字不能与Unit...
托福口语21天——day5 发... 目录 一、连读纠音 二、语料输入+造句输出 三、真题 一、连读纠音 英语中的连读方式有好几种...
五、排序与分页 一、排序 1、语法 ORDER BY 字段 ASC | DESC ASC(ascen...
Linux系统中如何安装软件 文章目录一、rpm包安装方式步骤:二、deb包安装方式步骤:三、tar....
开荒手册4——Related ... 0 写在前面 最早读文献的时候,每每看到related work部分都会选择性的忽略&...
实验01:吃鸡蛋问题 1.实验目的: 通过实验理解算法的概念、算法的表示、算法的时间复杂度和空间复杂度分析&...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
Spring Cloud Al... 前言 本文小新为大家带来 Sentinel控制台规则配置 相关知识,具体内容包括流控...
多项目同时进行,如何做好进度管... 多项目同时进行,如何做好进度管理? 大多数时候,面对项目进...
ATTCK红队评估实战靶场(二... 前言 第二个靶机来喽,地址:vulunstack 环境配置 大喊一声我...