在unity开发中出现这个bug。
在网上查了下是在迭代器中直接修改引起的。c#是不允许你在迭代器中直接修改。
改了一下确实解决。
原本是这样
public void Run()
{
foreach (var item in timerDict)
{
if (null != item.Value)
{
item.Value.Run();
}
}
}
改成这样:
public void Run()
{
//使用迭代器时不能直接在里面修改值,获得引用在做操作
tempTimerList.Clear();
foreach (CTimerItem item in timerDict.Values)
{
if (null != item)
{
tempTimerList.Add(item);
}
}
for(int i =0;i<tempTimerList.Count;i++)
{
tempTimerList[i].Run();
}
}