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