UGUI_使用DoTween
?
因為NGUI中已經有UITween了,可是UGUI中是沒有這樣的Tween的。因為在做游戲暫停的時候通常會使用Time.Scale =0 ,
可是暫停的時候UI如果需要繼續有動畫怎么辦呢?
在DoTween中只需要設置?? ?tweener.SetUpdate(true); 即可。
意思就是這個Tween是忽略TimeScale,如果不寫的話?tweener.SetUpdate 是 false。
例子
using?DG.Tweening; //不能少了這個命名空間。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ????void Start () ????{ ????????//讓TimeScale = 0 ????????Time.timeScale = 0; ? ? ????????Image image = transform.Find("Image").GetComponent<Image>(); ????????//調用DOmove方法來讓圖片移動 ????????Tweener tweener = image.rectTransform.DOMove(Vector3.zero,1f); ????????//設置這個Tween不受Time.scale影響 ????????tweener.SetUpdate(true); ????????//設置移動類型 ????????tweener.SetEase(Ease.Linear); ????????tweener.onComplete = delegate() { ????????????Debug.Log("移動完畢事件"); ????????}; ????????image.material.DOFade(0,1f).onComplete = delegate() { ????????????Debug.Log("褪色完畢事件"); ????????}; ????} |
Tween的移動類型有很多種,比如勻速運動、加速運動、減速運動,等等。如果你拿捏不準你需要用什么移動類形式。
http://www.robertpenner.com/easing/easing_demo.html?你可以在這里預覽一下那種移動類型更佳適合你。
代碼中我們設置了圖片的移動 和 褪色,因為移動的Tween設置了忽略Time.Scale,所以代碼中Time.Scale =0時,圖片的Tween響應了位移操作,然后褪色的Tween卻沒有。
?
部分文檔
?
DoTween UnityUI
Dotween已為新的GUI系統做好準備,包括CanvasGroup,Graphic,Image,LayoutElement,Outline,RectTransform,ScrollRect,Slider,Text。
利用它你肯定可以定制出強大的動畫系統。
Dotween TextMesh Pro/2D Tookit
Dotween同樣為2D Tookit的Tk2dBaseSprite,tk2dSliceSprite等做好準備
Dotween同樣為TextMeshPro+TextMeshProUGUI做好準備,包括DOFontSize,DOText,DOFaceFade等
Dotween 路徑動畫
dotwwen pro包含路徑動畫,路徑可視化編輯,強大的屬性面板
Dotween Pro :https://www.assetstore.unity3d.com/en/#!/content/32416
Dotween Free:https://www.assetstore.unity3d.com/en/#!/content/27676
一、術語
Tweener
一個tween控制value和animates
Sequence
一個特殊的tween,并不是控制value,和其它的tween一起成為一個動畫組
Tween
一個普通詞,既可以表示? Tweener 也可以表示 序列
Nested tween
一個tween,包含序列
DoTween前綴
前綴在智能感知里是非常重要的,所以盡可能要記住這些:
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的初始容量(在高版本中可以調用?DOTween.SetTweensCapacity)
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
詳細的文檔請參考官方:http://dotween.demigiant.com/documentation.php
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()
官方英文API
后面大多比較簡單就不再一一翻譯了,附上官方英文文檔:http://dotween.demigiant.com/documentation.php
?
總結
以上是生活随笔為你收集整理的UGUI_使用DoTween的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UGUI_判断鼠标或者手指是否点击在UI
- 下一篇: Shader相关Mask裁切UI粒子特效