1. 程式人生 > >DOTween的基本用法

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 }