插件-DOTween

簡介

實(shí)例

寫法

  • 通用:DoTween.To(()=>value,x=>value=x,100,1)

  • 簡潔:transform.DOMoveX(100,1)

  • 混合:

    //用完即止
    transform.DOMove(new Vector3(2,2,2), 2)
      .SetEase(Ease.OutQuint)
      .SetLoops(4)
      .OnComplete(myFunction);
    
    //后續(xù)操作
    Tween myTween = transform.DOMove(new Vector3(2,2,2), 2)
      .SetEase(Ease.OutQuint)
      .SetLoops(4)
      .OnComplete(myFunction);
    
    //復(fù)制操作SetAs()
    material.DOColor(Color.red, 2).SetAs(myTween);
    

生命周期

  • 完成即止,自動銷毀用爪,若是之后還需要使用哩至,就設(shè)置SetAutoKill(false)
  • 如果物體null ,有safemode

關(guān)鍵字

  • Tween:對象總稱
  • Tweener:某單個(gè)對象
  • Sequence:多個(gè)單個(gè)對象的組合

語法

audio

dofade

camera

doshakeposition
doshakerotation

transform

domove  dolocalmove
dojump  dolocaljump
dorotate    dolocalrotate   dorotatequaternion  dolocalqotatequaternion
dolookat
doscale
dopunchposition/rotation/scale(反彈式 可以抖一次)
doshakeposition/rotation/scale(抖動式)

tween

dotimescale(改變tween時(shí)間縮放)

image

dofillamount

recttransform

dosizedelta

slider

dovalue

sequence

//相當(dāng)于一個(gè)tween隊(duì)列 依次執(zhí)行相應(yīng)的tween
append(在隊(duì)尾插入tween)
prepend(在隊(duì)首插入tween)

appendinterval(在隊(duì)尾插入延遲的時(shí)間)
prependinterval(在隊(duì)首插入拖延時(shí)間)

appendcallback(每一個(gè)tween后添加完成的回調(diào))
prependcallback(添加的好像是再整個(gè)sequence開始回調(diào))

insert(在某時(shí)間插入tween,和本身tween隊(duì)列不沖突叨襟,同時(shí)進(jìn)行)
join(和最后一個(gè)tween同時(shí)進(jìn)行)

Sequence mySequence = DOTween.Sequence();
mySequence.Append(transform.DOMoveX(45, 1));
mySequence.Append(transform.DORotate(new Vector3(0,180,0), 1));
mySequence.PrependInterval(1);
mySequence.Insert(0, transform.DOScale(new Vector3(3,3,3), mySequence.Duration()));

settings

//dotween的默認(rèn)設(shè)置
dotween.timescale:全局時(shí)間縮放

set

setdelay(延遲發(fā)生)
setas(復(fù)制tween)
setautokill
setease
setid(int,string)
setloops

callback

oncomplete(完成時(shí))
onkill(kill時(shí)床蜘,可以設(shè)置autokill)
onplay(開始或者被暫停之后開始)
onpause(暫停或者當(dāng)autokuii=true完成時(shí))
onrewind(去了返回到開始時(shí))
onstart()
onupdate()

tweenparams

//儲存tween操作
TweenParams tParms = new TweenParams().SetLoops(-1).SetEase(Ease.OutElastic);

transformA.DOMoveX(15, 1).SetAs(tParms);
transformB.DOMoveY(10, 1).SetAs(tParms);

control

//停止
DOTween.PauseAll();
DOTween.Pause("badoom");
DOTween.Pause(someTransform);
myTween.Pause();
transform.DOPause();

//完成
complete    completeall
pause   pauseall
kill    killall
play    playall
restart restartall

//停止就開始 開始就停止
togglepause togglrpauseall

//是否綁定tween(是否存在未kill的)
istweening

//tween是否激活(未被kill)
isactive

//tween是否完成(killed返回false)
iscomplete

//tween是否進(jìn)行
isplaying

//清除
dotween.clear

coroutine

IEnumerator SomeCoroutine()
{
    Tween myTween = transform.DOMoveX(45, 1);
    yield return myTween.WaitForCompletion();
    Debug.Log("Tween completed!");
}

WaitForCompletion
WaitForkill
WaitForstart
WaitForrewind

//坐標(biāo)到達(dá)
Tween myTween = transform.DOMoveX(45, 1);
yield return myTween.WaitForPosition(0.3f)

再次學(xué)習(xí)

void Start () {
    Sequence s = DOTween.Sequence();
    s.Append(transform.DOLocalMoveX(20, 5).OnComplete(() => Debug.LogError("s->x end")))
        .AppendCallback(() => Debug.LogError("s->end"))
        .AppendInterval(2)
        .AppendCallback(() => Debug.LogError("s->end"))
        .Append(transform.DOLocalMoveY(20, 5).OnComplete(() => Debug.LogError("s->y end")));
    s.SetId("sequence").OnUpdate(()=>Debug.LogError("s->update"));

    gameObject.transform.DOLocalMoveX(20, 20).SetId("movex").OnKill(BeKill);
    gameObject.transform.DOLocalMoveY(20, 20).SetId(1).OnPause(BePause);
}

void Update () {
    if (Input.GetKeyDown(KeyCode.Space))
    {
        DOTween.Kill("movex");
        DOTween.Pause(1);
        Debug.LogError(DOTween.IsTweening("sequence"));
    }
}

void BeKill()
{
    Debug.LogError("kill");
}

void BePause()
{
    Debug.LogError("pause");
}
  1. 執(zhí)行先后順序:若是不沖突的 則Sequence和Tweener同時(shí)進(jìn)行油航;若是沖突了 也是同時(shí)進(jìn)行 只是后面的效果顯現(xiàn)出來

    //1. X方向先5s后面 再15s前面 會突然瞬移到20s的5s所在的x位置
    gameObject.transform.DOLocalMoveX(20, 20).SetEase(Ease.Linear).OnComplete(() => Debug.LogError("complete")).SetId("movex");
    
    Sequence s = DOTween.Sequence();
    s.Append(transform.DOLocalMoveX(20, 5).OnComplete(() => Debug.LogError("x end")))
        .AppendCallback(() => Debug.LogError("end"))
        .AppendInterval(2)
        .AppendCallback(() => Debug.LogError("end"))
        .Append(transform.DOLocalMoveY(20, 5).OnComplete(() => Debug.LogError("y end")))
        .AppendCallback(() => Debug.LogError("end"));
    //2崭庸。X方向看上去都是20s那樣進(jìn)行
    Sequence s = DOTween.Sequence();
    s.Append(transform.DOLocalMoveX(20, 5).OnComplete(() => Debug.LogError("x end")))
        .AppendCallback(() => Debug.LogError("end"))
        .AppendInterval(2)
        .AppendCallback(() => Debug.LogError("end"))
        .Append(transform.DOLocalMoveY(20, 5).OnComplete(() => Debug.LogError("y end")))
        .AppendCallback(() => Debug.LogError("end"));
    
    gameObject.transform.DOLocalMoveX(20, 20).SetEase(Ease.Linear).OnComplete(() => Debug.LogError("complete")).SetId("movex");
    
  2. 對于Sequence,appendcallback每完成一個(gè)tweener之后可以插入此方法

  3. SetId既可以字符串也可以數(shù)字 可以通過DOTween.OnXXX()來引發(fā)Tweener的對應(yīng)事件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市怕享,隨后出現(xiàn)的幾起案子执赡,更是在濱河造成了極大的恐慌,老刑警劉巖函筋,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沙合,死亡現(xiàn)場離奇詭異,居然都是意外死亡跌帐,警方通過查閱死者的電腦和手機(jī)首懈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來含末,“玉大人猜拾,你說我怎么就攤上這事∮逗校” “怎么了挎袜?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肥惭。 經(jīng)常有香客問我盯仪,道長,這世上最難降的妖魔是什么蜜葱? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任全景,我火速辦了婚禮,結(jié)果婚禮上牵囤,老公的妹妹穿的比我還像新娘爸黄。我一直安慰自己,他們只是感情好揭鳞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布炕贵。 她就那樣靜靜地躺著,像睡著了一般野崇。 火紅的嫁衣襯著肌膚如雪称开。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天乓梨,我揣著相機(jī)與錄音鳖轰,去河邊找鬼。 笑死扶镀,一個(gè)胖子當(dāng)著我的面吹牛蕴侣,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播臭觉,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼睛蛛,長吁一口氣:“原來是場噩夢啊……” “哼鹦马!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忆肾,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荸频,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后客冈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旭从,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年场仲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了和悦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡渠缕,死狀恐怖鸽素,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亦鳞,我是刑警寧澤馍忽,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站燕差,受9級特大地震影響遭笋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜徒探,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一瓦呼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧测暗,春花似錦央串、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挫掏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秩命,已是汗流浹背尉共。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留弃锐,地道東北人袄友。 一個(gè)月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像霹菊,于是被迫代替她去往敵國和親剧蚣。 傳聞我的和親對象是個(gè)殘疾皇子支竹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1.命名前綴DO: 動作操作前綴。 例如:DoMove(),DoKill()等等鸠按。 Set:動畫設(shè)置操作前綴礼搁。例如...
    胤醚貔貅閱讀 2,449評論 1 3
  • 文章內(nèi)容: 一、認(rèn)識DoTween插件 二目尖、通過UGUI制作血條的三種方法 認(rèn)識DoTween: Using DG...
    Joe_Game閱讀 1,953評論 0 0
  • DOTweenPath可以為變量制作動畫馒吴,也可以設(shè)置物體移動的路徑,還可以制作屏幕震動效果瑟曲∫粒可以在任意時(shí)刻實(shí)例化路...
    道阻且長_行則將至閱讀 15,814評論 0 2
  • 1.命名前綴 DO:動作操作前綴。例如:DoMove(),DoKill()等等洞拨。 Set:動畫設(shè)置操作前綴扯罐。例如:...
    LK_LK閱讀 2,291評論 0 0
  • 原創(chuàng)首發(fā) 【龍七七7.3】我會飛 ——堅(jiān)持第166天 一.我會飛 我會飛行。 我看見河道在我眼前不斷向后飛去烦衣,向右...
    龍七七閱讀 291評論 3 3