Unity_DOTween

DOTween官網

DG.Tweening.Ease枚舉詳解

 

2019.12.12補充:php

問題:當前dotween動畫沒播放完,便再次播放有衝突的操做,如連續屢次播放、正播、倒播,致使顯示不正常或報錯。css

解決方法:在每次開始執行播放動畫時,先加上下面對應相似的殺死進程代碼,就OK了html

   
   
            
   
   
  1. transform.DOKill();
  2. transform.RectTransform().DOKill();

 

讓DOTweenAnimation忽略Time.timeScale = 0的影響:函數

   
   
            
   
   
GetComponent<DOTweenAnimation>().tween.SetUpdate(true);

 

2019.06.25更新:oop

DOTween動態添加DOTweenAnimation的方法:

一、方法1測試

在實際測試,發現有時莫名失效。建議採用預製體形式。動畫

  
  
           
  
  
  1. using DG.Tweening;
  2. using DG.Tweening.Core;
  3. DOTweenAnimation da= ob.gameObject.AddComponent<DOTweenAnimation>();
  4. da.animationType = DOTweenAnimationType.LocalRotate;
  5. da.easeType = Ease.Linear;
  6. da.duration = 0.3f;
  7. da.loops = -1;
  8. da.endValueV3 = new Vector3( 0, 50, 0);

 

方法2spa

實現讓該物體不停旋轉。.net

  • 默認的第三個參數是RotateMode.Fast,也就是全部的旋轉操做都不能超過360°,若是超過旋轉就無效,因此如今採用RotateMode.FastBeyond360
  
  
           
  
  
  1. icon.transform.DOLocalRotate( new Vector3( 0, 0, -360), 2, RotateMode.FastBeyond360)
  2. .SetEase(Ease.Linear).SetLoops( -1, LoopType.Restart).Play();

 

 

一、DOTween.To()

將某點在必定時間內移動到某點插件

  
  
           
  
  
  1. using DG.Tweening;
  2. Vector3 myvalue = new Vector3( 0, 0, 0);
  3. DOTween.To(() => myvalue, x => myvalue = x, new Vector3( 10, 10, 10), 2);
  4. 要移動的初始值 目標值 時間

二、DOMove()

在1s內將目標物體從當前位置移動到目標位置

  
  
           
  
  
  1. transform.DOMove( new Vector3( 1, 1, 1), 1);
  2. transform.DOLocalMove( new Vector3( 1, 1, 1), 1);

三、DOMoveX()、DOMoveY()、DOMoveZ()

從當前位置延X/Y/Z方向,移動到目標位置5

  
  
           
  
  
transform.DOMoveX(5, 1);

四、From()

從目標位置,移動到當前位置

  
  
           
  
  
  1. 絕對位置,若當前座標( 1, 0, 0),即從 5運動到 1
  2. transform.DOMoveX( 5, 1).From();
  3. transform.DOMoveX( 5, 1).From( false);
  4. 相對位置,若當前座標( 1, 0, 0),即從 6運動到 16 -1= 5,相對位移 5
  5. transform.DOMoveX( 5, 1).From( true);

五、Pause()、DOPlay()、DOPlayForward()、DOPlayBackwards()、DORestart()

動畫暫停、動畫播放、動畫向前播放、動畫倒放

  
  
           
  
  
  1. //DOTween播放會生成動畫,動畫保存在Tweener信息中,默認動畫播放完會被銷燬,要想倒放,必須設爲不被銷燬
  2. //tweener也會播放動畫
  3. Tweener tweener= transform.DOLocalMove( new Vector3( 1, 1, 1), 1);
  4. tweener.SetAutoKill( false);
  5. //暫停動畫
  6. tweener.Pause();
  7. //播放動畫,只播放一次,再次調用不可播放
  8. transform.DOPlay();
  9. //向前播放動畫
  10. transform.DOPlayForward();
  11. //動畫倒放
  12. transform.DOPlayBackwards();
  13. //從新播放動畫:若用的可視化編輯,需取消AutoKill
  14. transform.DORestart();

六、SetEase()

設置動畫曲線,即動畫運動方式(相似設置PPT動畫的出現效果)

  
  
           
  
  
  1. Tweener tweener = transform.DOLocalMoveX( 0, 5);
  2. tweener.SetEase(Ease.InBounce);

七、SetLoops

設置動畫播放次數,下爲播放兩次動畫

  
  
           
  
  
  1. Tweener tweener = transform.DOLocalMoveX( 0, 5);
  2. tweener.SetLoops( 2);

八、事件函數

動畫播放完成事件函數、

  
  
           
  
  
  1. Tweener tweener = transform.DOLocalMoveX( 0, 5);
  2. //動畫播放完成調用事件函數
  3. tweener.OnComplete(你的方法);
  4. //動畫銷燬調用事件函數
  5. tweener.OnKill(你的方法);
  6. //動畫播放時調用事件函數(一直調用)
  7. tweener.OnPlay(你的方法);
  8. //動畫暫停時調用事件函數
  9. tweener.OnPause(你的方法);
  10. //動畫重置時調用事件函數
  11. tweener.OnRewind(你的方法);
  12. //動畫開始播放時調用事件函數
  13. tweener.OnStart(你的方法);
  14. //動畫播放時調用事件函數(一次)
  15. tweener.OnPlay(你的方法);

九、DOText    文本動畫

若文本框內無文字,在3s內逐字顯示文字。

如有文字,則逐字覆蓋掉原先文字,顯示新文字

  
  
           
  
  
GetComponent<Text>().DOText("接下來咱們進入第二篇章", 3);

十、DOShakePosition    震動效果

掛載在攝像機上面

  
  
           
  
  
  1. //持續時間,其他默認
  2. transform.DOShakePosition( 1);
  3. //持續時間、強度(下爲只在X、Y方向上震動)
  4. transform.DOShakePosition( 1, new Vector3( 3, 3, 0));

十一、DOColor    改變顏色

在2s中將本來顏色變爲紅色

  
  
           
  
  
GetComponent<Text>().DOColor(Color.red, 2);

十二、DOFade    改變透明度

文字透明度會在3s內從0變爲1

  
  
           
  
  
GetComponent<Text>().DOFade(1, 3);

1三、可視化動畫編輯

該組件在DOTween Pro插件裏面

可以使用代碼經過控制ID的方式來控制動畫的播放

下載地址:下載

  
  
           
  
  
  1. using UnityEngine;
  2. using DG.Tweening;
  3. public class UIController : MonoBehaviour {
  4. DOTweenAnimation tweenAnimation;
  5. void Start () {
  6. tweenAnimation = GetComponent<DOTweenAnimation>();
  7. }
  8. public void OnClick()
  9. {
  10. tweenAnimation.DOPlayBackwards();
  11. }
  12. }

1四、可視化路徑編輯

該組件在DOTween Pro插件裏面

下載地址:下載

Shift+Ctrl:添加路徑點

Shift+Alt:刪除路徑點

Duration:時長

Delay:延遲時間

Ease:運動模式

Loops:播放次數,-1爲循環播放,0爲播放一次

Path Type:Linner/Catmull Rom,Linner,線性;Catmull Rom給路徑作圓滑處理

Close Path:將起點與終點鏈接,圍成一個圈

Local Movement:局部座標下移動

Orientation:朝向。To Path,遊戲物體朝向路徑運動;Look At Transform;Look At Position

Relative:勾選後,選擇遊戲物體,路徑可總體移動

Show Indexes:是否顯示路徑索引

Handles Type:Free/Full,Full,每一個點顯示三座標

Reset Path:刪除全部點,重置路徑

代碼控制:

該組件自帶控制方法,直接調用便可,固然也可在Unity經過Button拖拽方式直接控制

  
  
           
  
  
  1. using UnityEngine;
  2. using DG.Tweening;
  3. public class UIController : MonoBehaviour {
  4. DOTweenPath tweenAnimation;
  5. void Start () {
  6. tweenAnimation = GetComponent<DOTweenPath>();
  7. }
  8. public void OnClick()
  9. {
  10. //開始播放
  11. tweenAnimation.DOPlay();
  12. //運動開關:點擊一次,繼續開始播放,再點擊一次,在當前位置暫停
  13. tweenAnimation.DOTogglePause();
  14. //從新播放動畫
  15. tweenAnimation.DORestart();
  16. //殺死動畫,此後沒法再播放動畫
  17. tweenAnimation.DOKill();
  18. }
  19. }
相關文章
相關標籤/搜索