在unity开发中出现这个bug。
在网上查了下是在迭代器中直接修改引起的。c#是不允许你在迭代器中直接修改。
改了一下确实解决。
原本是这样
[csharp] view plain copy
- public void Run()
- {
- foreach (var item in timerDict)
- {
- if (null != item.Value)
- {
- item.Value.Run();
- }
- }
- }
改成这样:
[csharp] view plain copy
- 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();
- }
- }
时间: 2024-12-26 15:54:44