最近查看同事一個飄字卡住問題,飄字的動畫用dotween實現
飄字卡住的唯一原因是被誤殺
唯一調試方法就是的OnKill回調添加打印和OnComplete回調添加打印,
結果發現動畫還沒播放完這是被殺了,關鍵這個誤殺不是飄字裏面,而是其他模塊調用了kill觸發的
例如:
actionSequence = DOTween.Sequence();我用這個做飄字
另外一個模塊也聲明
if (null != quence)
quence.Kill();
quence = DOTween.Sequence();
然後這個quence.Kill();會把飄字的動畫給殺了
結果不止這個包括所有dotween返回的tweener做kill會出現誤殺的情況
爲什麼存起來的tween kill有問題
這個關於設定問題,我們初始化設定dotween是有回收功能,有可能其他動畫的tween就是存起來的tween,如果執行kill可能把其他動畫殺掉,就會出現卡住問題
這時候要我們看看dotween的接口了
看到了第一個參數就是回收
看看下面參數說明
解決方法
1.存起來的tween可以根據onkill來賦值null,然後判斷存起的tween是否爲null來進行kill
2.把tweener存起來kill有問題,只能用setid和killid來實現
使用如下圖: