前言
DOTween現在還處於 alpha,所以還有一些缺失的功能(如路徑插件,附加回調和其它的tween選項),這個文檔在不久的將來可能會改變。
一、術語
Tweener 一個tween控制value和animates
Sequence 一個特殊的tween,並不是控制value,和其它的tween一起成為一個動畫組
Tween 一個普通詞,既可以表示 Tweener 也可以表示 序列
Nested tween 一個tween,包含序列
前綴
前綴在智能感知里是非常重要的,所以盡可能要記住這些:
DO 前綴是所有的tween的快捷方式(可以直接操作已知 object,比如transform或material),也是DOTween 類主要的前綴
transform.DOMoveX(100, 1); transform.DORestart(); DOTween.Play();
Set 前綴,所有的tween設置
myTween.SetLoops(4, LoopType.Yoyo).SetSpeedBased();
On 前綴, 所有的tween回調
myTween.OnStart(myStartFunction).OnComplete(myCompleteFunction);
二、DOTween.Init
當你第一次創建 tween,DOTween將會使用默認值自動初始化。
如果你喜歡自己初始化(推薦),在創建任何tween之前(創建之后將不會有任何效果),調用這些方法一次。
想想看,你可以使用DOTween的 global settting 改變所有的初始化設置。
或者,你可以 通過鏈 SetCapacity 初始化方法,它可以設置 Tweeners最大值/FPS的初始容量(在高版本中可以調用 )
static DOTween.Init(bool recycleAllByDefault = false, bool useSafeMode = true, LogBehaviour logBehaviour = default)
比如:
DOTween.Init(true, true, LogBehaviour.Verbose).SetCapacity(200, 10);
三、Creating a Tweener
Tweener好似為DOTween工作的一只螞蟻,它采用 屬性/字段對給定值進行動畫處理。
截止目前 DOTween可以處理這些類型的值:
float,int,uint,Vector2/3/4,Quaternion,Rect,RectOffset,string
有三種方式創建 Tweener
A.便捷方式
DOTween包括一些已知的unity object,比如 Transform,Rigidbody和Material,你可以直接對這些object進行tween(這也會自動設置對象自己為target)比如:
transform.DOMove(new Vector3(2,3,4), 1);
rigidbody.DOMove(new Vector3(2,3,4), 1); material.DOColor(Color.green, 1);
所有這些快速方式也有From,除了特殊說明,只需在方法名稱后添加From
transform.DOMoveFrom(new Vector3(2,3,4), 1);
rigidbody.DOMoveFrom(new Vector3(2,3,4), 1); material.DOColorFrom(Color.green, 1);
Camera
DOColor(Color to, float duration)
DOShakePosition(float duration, float strength, int vibrato, float randomness) DOShakeRotation(float duration, float strength, int vibrato, float randomness)
Light
Material
Rigidbody
Move
SpriteRenderer
詳細的文檔請參考官方:
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)
Rotate
DORotate(Vector3 to, float duration, bool useShortest360Route = true) DOLocalRotate(Vector3 to, float duration, bool useShortest360Route = true) DOLocalAxisRotate(Vector3 to, float duration)
Scale
DOScale(Vector3 to, float duration)
DOScaleX/DOScaleY/DOScaleZ(float to, float duration)
Punch – no FROM
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 – no FROM
DOShakePosition(Vector3 punch, float duration, float strength, int vibrato, float randomness, bool snapping) DOShakeRotation(Vector3 punch, float duration, int vibrato, float elasticity) DOShakeScale(Vector3 punch, float duration, int vibrato, float elasticity)
WaitFor coroutines
WaitForCompletion()
WaitForElapsedLoops(int elapsedLoops)
WaitForKill()
WaitForPosition(float position) WaitForStart()
后面的大多簡單就不再一一翻譯了,官方英文文檔:
