产生问题:
成百上千个物体放在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