DOTween的基本用法


首先聲明一點,不要簡單的認為 DOTween 只能用在 Transform 組件上完成一些簡單的動畫,或者是完成一些 UI 動畫,DOTween 的用途是很廣的,unity中有很多組件都可以使用 DOTween 插件完成動畫,大家可以去 DOTween 的官網看一下http://dotween.demigiant.com/documentation.php。看完之后,你會有一種相見恨晚的感覺。

下面介紹一下常用的API,並以 Transform 組件寫個小例子:

常用的函數都是以DO開頭,大家可以自己看下文檔。

組件實例.DOPlay():播放動畫

組件實例.DOPause():暫停動畫

組件實例.DOPlayForward():正放動畫

組件實例.DOPlayBackwards():倒放動畫,倒放不會循環

組件實例.DOKill():殺死動畫

提醒下大家,一定要用組件實例去調用上面這些方法,如果用 this 關鍵字去調用,不會有語法錯誤,但是不會有效果

tweener.SetLoops():設置循環次數。-1:無限循環

tweener.SetEase():設置緩動效果

生命周期:

tweener.OnStart():動畫開始時調用,不管循環多少次,只調用一次

tweener.OnUpdate():動畫播放時調用

tweener.OnPlay():動畫開始播放時調用

tweener.OnPause():動畫暫停時調用

tweener.OnKill():動畫完全結束時或者被殺死時調用

tweener.OnStepComplete():單次動畫結束時調用,因為我們設置了循環,這里時指單次動畫結束

tweener.OnComplete():動畫完全結束時調用,在OnKill之前調用

tweener.OnWaypointChange():這個我還沒搞清楚到底什么時候調用,知道的大佬告訴一聲,謝謝!

tweener.OnRewind():倒放結束時調用

 

Sequence隊列:就是將多個動畫放到一個隊列里面,然后挨個挨個播放,並可以循環。

DOTween.Sequence():創建隊列。

sequence.Append(tweener):將動畫加入隊列。

sequence.Insert(1, tweener):插入一個並行的動畫到隊列的某個位置。

sequence.SetLoops(-1):設置隊列是否循環。-1:無限循環。

 1 using UnityEngine;
 2 using DG.Tweening;
 3 
 4 public class Subject1Test : MonoBehaviour
 5 {
 6     #region --變量定義
 7     private Tweener tweener;
 8     private bool isPause = false;
 9     #endregion
10 
11     #region --系統函數
12     private void Start()
13     {
14         tweener = this.transform.DOMove(new Vector3(10, 0, 0), 5f);
15         tweener.SetLoops(-1);//設置循環次數。-1:無限循環
16         tweener.SetEase(Ease.OutBack);//設置緩動效果
17         tweener.OnStart(delegate { Debug.Log("OnStart"); });//動畫開始時調用,不管循環多少次,只調用一次
18         tweener.OnUpdate(delegate { Debug.Log("OnUpdate"); });//動畫播放時調用
19         tweener.OnPlay(delegate { Debug.Log("OnPlay"); });//動畫開始播放時調用
20         tweener.OnPause(delegate { Debug.Log("OnPause"); });//動畫暫停時調用
21         tweener.OnKill(delegate { Debug.Log("OnKill"); });//動畫完全結束時或者被殺死時調用
22         tweener.OnStepComplete(delegate { Debug.Log("OnStepComplete"); });//單次動畫結束時調用,因為我們設置了循環,這里時指單次動畫結束
23         tweener.OnComplete(delegate { Debug.Log("OnComplete"); });//動畫完全結束時調用,在OnKill之前調用
24         tweener.OnWaypointChange(delegate { Debug.Log("OnWaypointChange"); });
25         tweener.OnRewind(delegate { Debug.Log("OnRewind"); });//倒放結束時調用
26     }
27     private void Update()
28     {
29         ControlTweener();
30     }
31     #endregion
32 
33     #region --自定義函數
34     private void ControlTweener()
35     {
36         if (Input.GetKeyDown(KeyCode.Space))
37         {
38             isPause = !isPause;
39             if (isPause)
40             {
41                 this.transform.DOPause();//暫停動畫
42             }
43             else
44             {
45                 this.transform.DOPlay();//播放動畫
46             }
47         }
48         if (Input.GetKeyDown(KeyCode.F))
49         {
50             this.transform.DOPlayForward();//正放動畫
51         }
52         if (Input.GetKeyDown(KeyCode.B))
53         {
54             this.transform.DOPlayBackwards();//倒放動畫
55         }
56         if (Input.GetKeyDown(KeyCode.K))
57         {
58             this.transform.DOKill();//殺死動畫
59         }
60     }
61     #endregion
62 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM