yyl
2026-04-03 99a11d2bb19d74f6cc8584ac16838062af4fb301
Main/System/Battle/BattleManager.cs
@@ -12,6 +12,8 @@
    //  同时只能有一场战斗在进行 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
@@ -631,10 +633,13 @@
    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();