| | |
| | | |
| | | // 同时只能有一场战斗在进行 guid, battlefield |
| | | protected Dictionary<string, BattleField> battleFields = new Dictionary<string, BattleField>(); |
| | | // 缓存key列表,避免Run()每帧分配 |
| | | private List<string> _runKeysCache = new List<string>(); |
| | | |
| | | public float[] speedGear; //战斗倍数对应的实际速率 |
| | | public int speedIndex |
| | |
| | | public void Run() |
| | | { |
| | | |
| | | List<string> keys = new List<string>(battleFields.Keys); |
| | | for (int i = keys.Count - 1; i >= 0; i--) |
| | | _runKeysCache.Clear(); |
| | | foreach (var key in battleFields.Keys) |
| | | _runKeysCache.Add(key); |
| | | for (int i = _runKeysCache.Count - 1; i >= 0; i--) |
| | | { |
| | | var battleField = battleFields[keys[i]]; |
| | | if (!battleFields.TryGetValue(_runKeysCache[i], out var battleField)) |
| | | continue; |
| | | try |
| | | { |
| | | battleField?.Run(); |