DoTween插件 API 总结

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, 如:() => myValue

setter - 委托,属性值的设置,如: value => myValue = value

to - 最终值

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<LogType,object>
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<int> 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<Tween> PausedTweens()
static List<Tween> PlayingTweens()
static List<Tween> TweensById(object id, bool playingOnly = false) //获得动画 通过 ID
static List<Tween> 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)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值