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