Dictionary<int, tk2dEffect>.Enumerator enumerator = this.mMap.GetEnumerator();
while (enumerator.MoveNext())
{
enumerator.Current.Value.Update(deltaTime * timeScale);
}
enumerator.Dispose();
mMap为Dictionary 类
在 while (enumerator.MoveNext()) 报错
InvalidOperationException: out of sync
while循环中并没有对mMap中进行删除修改操作,但却报了不同步的错
检查很久发现是因为在对mMap进行迭代过程中,异步对mMap执行Add操作(remove也不行)。
在迭代过程中,Dictionary 变量及Value是只读的,C#有保护机制,不允许在这个过程中修改这些变量。
解决方案:
可以设置一个List<>存储当前帧需要Add的内容
在每一帧的lateUpdate在add进去