DoTween的坑

1.暫停動畫的問題

使用DOTween.PauseAll(); 

出現了有的對象暫停了,有的對象沒有暫停的bug

使用 DOTween.timeScale = 0;代替
 

2.委託內的變量問題

成百上千個物體放在List列表裏面循環,每個物體都要使用移動和移動結束事件。

BUG:

動畫結束之後我想隱藏該物體,結果卻沒有正常的隱藏,代碼如下

foreach (var item in lists)
{
    if (item != null)
    {
        item .transform.DOLocalMove(AnchorBanker.transform.localPosition, 0.5f).OnComplete(() =>
        {
            item .gameObject.SetActive(false);
        });

    }

}
產生的表現:

這個List的最後一個item纔會被正常的隱藏。

原因:匿名委託中使用的item指向了lists的最後一個item

解決辦法:

將Item的引用緩存起來,代碼如下

foreach (var item in lists)
{
    if (item != null)
    {
        var go = item;
        go.transform.DOLocalMove(AnchorBanker.transform.localPosition, 0.5f).OnComplete(() =>
        {
            go.gameObject.SetActive(false);
        });

    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章