關於Unity中DOTween插件的使用(專題一)
DOTween
flash裏面的一個概念叫補間動畫,DOTween就是幹這個事情的。
補間動畫:在1秒鐘之內從A點移動到B點,在這個之間會把動畫補間補好。
當我們安裝好DOTween後,它就會提供很多補間的功能方便我們使用。當我們安裝了這個插件以後,我們就可以快速使用代碼來生成補間動畫。
例子:賽車選擇界面,旋轉賽車後有一個慢慢回彈的動畫效果。
安裝DOTween
1: 去網站http://dotween.demigiant.com/getstarted.php下載
2: 將DOTween解壓後復制到項目的任意目錄下(Editor, Plugins or Resources除外);
3: 運行DOTween的Setup: 菜單欄的 Tools/Demigiant;
4: 在代碼裏面 加上 DOTween的名字空間 using DG.Tween;
5: 安裝完DOTween插件後,很多組件能夠支持Tween;
DOTween對組件的擴展
1: 其他的組件擴展了Tween接口: 詳情見文檔:
http://dotween.demigiant.com/documentation.php
AudioMixer
AudioSource
Camera
Light
Material:
Rigidbody:
Rigidbody2D:
Transfrom
2: 例如Transfrom組件:
(1)組件實例.DOMove: 平移;
(2)組件實例.DOScale: 縮放;
(3)組件實例.DORotate 旋轉;
Tweener常用操作
1: 常用的播放控制函數
組件實例.DOPause(); 暫停一個Tween;
組件實例.DOPlay/DOPlayBackwards/DOPlayForward; 播放
組件實例.DOKill; // 殺掉Tween;
2:設置循環次數 t.SetLoop(); -1:為一直循環;
5: Tweener 常用的事件:
(1)OnStart();
(2)OnComplete();
(3)OnKill();
(4)OnUpdate();
DOTween實例
1.創建Unity項目
2.解壓下載的DOTween_1_1_620_hc.zip,復制文件夾到Unity項目目錄的根目錄下,根據提示點Setup DOTween,完成後多出兩個文件夾
3.再創建Scripts和Scenes文件夾,保存場景
4.創建一個立方體Cube,再創建一個腳本dotween_use
打開dotween_use
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; // 添加這個DOTween所在的名字空間 public class dotween_use : MonoBehaviour { //開始播放前所調用的函數 void on_tween_start() { Debug.Log("on_tween_start"); } //結束播放後所調用的函數 void on_tween_end() { Debug.Log("on_tween_end"); } // Use this for initialization void Start () { // 創建一個補間動畫,在5秒之內移動到目標點,會慢慢停下來,不會很生硬的那種 //Tweener t = this.transform.DOMove(new Vector3(0, 0, 10), 5.0f);//對象t會自動刪除 //創建一個補間動畫,在5秒之內不斷縮小,縮小到沒有 //t = this.transform.DOScale(new Vector3(0, 0, 0), 5.0f); //創建一個補間動畫,在3秒之內繞Y軸旋轉145度 Tweener t = this.transform.DORotate(new Vector3(0, 145, 0), 3.0f);//這個Vector3(0, 145, 0)是歐拉角,和Unity編輯器裏面是一樣的 //也有用四元素作為參數的旋轉函數 t.SetLoops(4); //循環播放4次, -1無限制循環播放,每次播放都是重頭開始 // this.transform.DOPause(); // 暫停播放; // this.transform.DOPlay(); // 開始播放; // this.transform.DOKill(); // 移除補間動畫; t.OnStart(this.on_tween_start); // 在動畫播放前調用事件 t.OnComplete(this.on_tween_end); // 大寫(一般用這個),在動畫播放後調用事件 //t.onComplete += this.on_tween_end;//小寫,是委托,也是在動畫播放後調用事件,效果一樣 } // Update is called once per frame void Update () { } }
5.運行的時候會多出這兩個節點,不能刪除或者隱藏,否則DOTween動畫將停下來
Sequence隊列
1: 創建一個隊列容器: DOTween.Sequence()
2: 將Tween加入到容器隊列 seq.Append(tween);
3: SetLoops():設置隊列容器的循環次數;
4: Insert: 插入一個並行的Tween;
Sequence實例
1.創建Unity項目
2.解壓下載的DOTween_1_1_620_hc.zip,復制文件夾到Unity項目目錄的根目錄下,根據提示點Setup DOTween,完成後多出兩個文件夾
3.再創建Scripts和Scenes文件夾,保存場景
4.創建一個立方體Cube,再創建一個腳本dotween_use
打開dotween_use
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; // 添加這個DOTween所在的名字空間 public class dotween_use : MonoBehaviour { // Use this for initialization void Start () { // 隊列容器 // (1)創建一個隊列 Sequence seq = DOTween.Sequence(); // (2)將一個Tweener對象放到隊列的後面 seq.Append(this.transform.DOMoveX(10, 5.0f));//在5秒之內移動到目標點 seq.Append(this.transform.DOMoveX(0, 5.0f));//在5秒之內移動到原點 seq.SetLoops(-1);//無限循環播放 // 插入一個Tweener對象到隊列的某一個時刻,這裏時刻是0 seq.Insert(0, this.transform.DOScale(new Vector3(2, 2, 2), 5.0f));//從0秒開始,在5秒內不斷放大到兩倍 } // Update is called once per frame void Update () { } }
Ease緩動效果
1: Tweener設置緩動動畫:
SetEase(效果類型);
2: 效果類型:
OutBack: 快速移動超出目標,然後慢慢回到目標點;
.....
Ease緩動效果案例
1.創建Unity項目
2.解壓下載的DOTween_1_1_620_hc.zip,復制文件夾到Unity項目目錄的根目錄下,根據提示點Setup DOTween,完成後多出兩個文件夾
3.再創建Scripts和Scenes文件夾,保存場景
4.創建一個立方體Cube,再創建一個腳本dotween_use
打開dotween_use
using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; // 添加這個DOTween所在的名字空間 public class dotween_use : MonoBehaviour { // Use this for initialization void Start () { //緩動效果 Tweener t = this.transform.DORotate(new Vector3(0, 270, 0), 3.0f);//在3秒之內繞Y軸旋轉270度 t.SetEase(Ease.OutBack);//添加一個回彈的效果,還有很多的效果可以Ease.XXX裏面查找,選中Ease按F12 //this.transform.DOMoveX(4, 3.0f).SetEase(Ease.OutBack);//有回彈效果的移動 } // Update is called once per frame void Update () { } }
註意:
每次按某個函數的F12的時候,發現我們實際使用的函數參數其實並沒有完整,實際上我們沒有填的參數系統會用默認的參數來填充,所以只要填有用的就函數參數就好了。
關於Unity中DOTween插件的使用(專題一)