Unity經驗之談-DoTween動畫結束匿名委托之巨坑


產生問題:

成百上千個物體放在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);
        });

    }

}

 

來源:http://www.cnblogs.com/vsirWaiter/p/7475044.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM