文章內(nèi)容:
一、認(rèn)識DoTween插件
二、通過UGUI制作血條的三種方法
認(rèn)識DoTween:
Using DG.Tweening;//引用DoTween插件的命名空間
腳本:
1.DoTween Animation






2.DoTween Path

類:
1.DOTweenAnimation(補(bǔ)間動畫)
屬性:設(shè)置是否自動銷毀:補(bǔ)間動畫對象.autoKill
更改動畫持續(xù)時間:補(bǔ)間動畫對象.duration
更改動畫的延時播放時間:補(bǔ)間動畫對象.delay
更改動畫的循環(huán)次數(shù):補(bǔ)間動畫對象.loops
更改動畫的循環(huán)類型:補(bǔ)間動畫對象.loopType
方法:向前播放動畫:補(bǔ)間動畫對象.DOPlayForward();
向后播放動畫:補(bǔ)間動畫對象.DOPlayBackwards();
通過ID名稱播放動畫:補(bǔ)間動畫對象.DOPlayById(ID名稱);
2.Tweener
DoTween創(chuàng)建的動畫,默認(rèn)都是Play狀態(tài),而且播放完畢之后會自動銷毀,
但是有很多動畫需要不斷的循環(huán)次數(shù),
所以說按默認(rèn)的話,就需要不斷的創(chuàng)建和銷毀動畫,
這樣就造成了內(nèi)存的消耗和資源的浪費(fèi),我們要避免這種情況。
DoTween為我們提供了一個類,方便我們對動畫的狀態(tài)和屬性進(jìn)行修改,這個類就是Tweener.
方法:
移動:Tweener對象=Transform對象.DOMoveX(X方向移動的距離,持續(xù)播放的時間);
延遲:Tweener對象.SetDelay(延遲播放的時間);
設(shè)置播放(運(yùn)動)方式:Tweener對象.SetEase(Ease.枚舉成員名);
暫停:Tweener對象.Pause();
//可以分開寫,也可以一次寫完
Tweener對象=Transform對象.DOMoveX(距離,持續(xù)時間).SetAutoKill(true或false).SetEase(Ease.枚舉成員名).SetLoops(循環(huán)次數(shù),循環(huán)類型.枚舉成員名);
實(shí)例:通過點(diǎn)擊打開按鈕、關(guān)閉按鈕播放圖片動畫(OnEnable方法、OnDisable方法、Tweener類、Button類,使用標(biāo)志位)
3.Sequence(隊(duì)列)
實(shí)例化一個Sequence:Sequence 對象名= DOTween.Sequence();
方法:
往隊(duì)列中添加動畫:隊(duì)列對象.Append(添加的動畫);
隊(duì)列延時播放動畫:隊(duì)列對象.PrependInterval(延遲時間);
往隊(duì)列中插入動畫:隊(duì)列對象.Insert(插入的位置,插入的動畫);
實(shí)例:制作血條(通過克隆、動態(tài)加載、父子物體、坐標(biāo)轉(zhuǎn)換、顯示隱藏)
方法一:通過靜態(tài)加載:拖游戲?qū)ο蠼o腳本進(jìn)行實(shí)例化;
方法二:通過動態(tài)加載:使用Resources.Load<后面的預(yù)設(shè)體類型對應(yīng)>("預(yù)設(shè)體的路徑") ? //此方法默認(rèn)狀態(tài)下是在Resources目錄下查找預(yù)設(shè)體?。。。?/p>
預(yù)設(shè)體必須在Resources的目錄下才能被找到,否則會報錯!?。?/p>
以上兩種方法,克隆的血條需要單獨(dú)放在另一個畫布(Canvas)中存放;

在調(diào)整血條大小的時候,不要直接調(diào)整血條的寬高,很容易出錯,最好是調(diào)整它的縮放;
畫布的渲染模式選擇攝像機(jī)渲染屏幕空間,方便觀察,可以顯示血條(2D),也可以顯示方塊(3D物體)
方法三:畫布的渲染模式選擇世界空間渲染模式,把畫布也當(dāng)作一個游戲?qū)ο螅謩e把每個畫布作為每個方塊的子物體,并把每個方塊的血條當(dāng)作每個畫布的子物體,通過畫布顯示每個方塊的血條信息,使用LookAt方法寫一個讓帶有血條的父的物體畫布朝向攝像機(jī)的位置