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