Unity经验之谈-DoTween动画结束匿名委托之巨坑
Posted 威少小二的园霖(微博:威少orz)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); }); } }
以上是关于Unity经验之谈-DoTween动画结束匿名委托之巨坑的主要内容,如果未能解决你的问题,请参考以下文章