dotween 預設配置加上鏈式呼叫api風格,配上lambda匿名函式呼叫,非常簡單清晰好用。dotween實現了通用的緩動演算法,能夠配置出各種想要的動畫效果。另外,佇列延遲**函式,也能完成各種非同步延遲執行功能。
dotween 為各種unity的物件做了函式繫結,方便呼叫。比如transform, color, text, material等都可以直接呼叫dotween的動畫api。我們先從通用的動畫函式來了解。
[csharp]view plain
copy
public static tweener to(dogettergetter, dosettersetter, t endvalue, float duration)
// 建立乙個 tweener 從當前座標0.5秒移動到座標vector3(100, 100, 100)位置
tween tween = dotween.to
( () => transform.position,
(x) => transform.position = x,
new vector3(100, 100, 00),
0.5f
);
引數t可以是各種數值型別,比如int,float,long ,vector等。getter, setter就是兩個**函式,可以使用匿名函式傳入。getter 用來獲取當前需要設定的值,setter用來設定當前數值,引數x是有dotween計算過後的數值。endvalue就是最終的數值,duration是使用的時間。和標準的tween動畫是一樣的。
getter, setter可以是多條語句的函式,就需要用{}括起來。理解起來就是,dotween利用傳入的兩個函式,來獲取初始值和每幀設定值,這樣就能驅使數值的變化反映到屬性上。這裡返回tween物件,是為了鏈式呼叫,dotween幾乎所有的函式呼叫都會返回tween物件,能夠繼續呼叫其他函式。
[csharp]view plain
copy
dotween.to
( () => audio.volume,
(v) => audio.volume = v,
1.0f,
10
) .oncomplete
( () =>
) .setease(ease.outsine);
比如,這裡我們鏈式呼叫了完成時候的**函式,和設定緩動演算法。緩動物件可以列舉所有通用的緩動演算法。
另外,還有乙個專門對顏色處理的通用函式。
[csharp]view plain
copy
image stepimage = transoform.getcomponent();
dotween.toalpha
( () => stepimage.color,
(c) => stepimage.color = c,
0,
0.5f
);
這裡和to的函式呼叫相似,只是這裡僅僅會變化alpha數值來改實現變透明度的動畫。
接下來就是一些列繫結transform, color, text, material的使用。
[csharp]view plain
copy
// 0.5秒內區域性座標變化到10,10,10
transform.dolocalmove(new vector3(10, 10, 10), 0.5f);
// 0.5秒內x世界座標變換到5
transform.domovex(5, 0.5f);
// 0.5f秒內世界座標相對當前,運動到5,5,5, 使用outcubic緩動演算法
transform.doblendablemoveby(new vector3(5, 5, 5), 0.5f).setease(ease.outcubic)
// text 2秒內漸變透明到0
text.dofade(0, 2f).setease(ease.outsine);
// 0.3秒內材質屬性fade變化到5,使用緩動演算法
material.dofloat(5, "_fade", 0.3f).setease(ease.outsine);
// 5秒內彈跳3次,彈到10,10,10位置
transform.dojump(new vector3(10, 10, 10), 3, 5f);
總結起來就是:
最後,我們來了解一下非常好用強大的動畫佇列sequence的使用。
[csharp]view plain
copy
dotween.sequence();
返回乙個sequence物件,以後sequence物件都是返回sequence物件,依然可以像tween一樣鏈式呼叫。重點介紹幾個函式的意義。
insert(time, tweener) 可以再佇列插入高一二tweener,第乙個引數時間,就是在這個佇列執行多少時間後,執行插入的tweener。
然後,看個列子,佇列可以執行動畫,執行**函式,按照我們需要的時間和次序進行,非常方便符合直覺使用。
[csharp]view plain
copy
dotween.sequence()
( go.transform.doblendablemoveby(new vector3(0, move, 0), 0.5f).setease(ease.outcubic)
) (
go.transform.doblendablemoveby(new vector3(0, move, 0), 1.5f).setease(ease.outsine)
) .insert
( 0.8f,
text.dofade(0, 2f).setease(ease.outsine)
) (
() =>
);
dotween.sequence()
( () =>
) .play();
Dotween外掛程式的使用
一 移動方法!1 前往世界座標某個位置 3秒到達 transform.domove new vector3 4,3,0 3 剛才我做了乙個測試,就是不管你cube的位置在 是誰的子物體,我設的世界座標就是你還是乙個父物體的時候會到達的位置。2 本地座標上移動 transform.dolocalmov...
Git 使用詳細教程
學習git的使用,寫的很詳細 git 總結 將本地專案上傳到碼雲 將本地的專案上傳到碼雲 1 碼雲上建立乙個專案 testgit 名字隨你 2 本地建立乙個資料夾d testgit,然後使用git bash 3 cd 到本地資料夾中d testgit,4 使用 git init 命令 初始化乙個gi...
Git Bash使用詳細教程
詳細命令教程上方位址進入檢視 一 git是什麼?git是目前世界上最先進的分布式版本控制系統。二 svn與git的最主要的區別?svn是集中式版本控制系統,版本庫是集中放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以首先要從 伺服器 得到最新的版本,然後幹活,幹完後,需要把自己做完的活推送到 ...