From cec8b67d82c2c2c1662d55c818c4a46bcc0487db Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 25 八月 2025 17:36:02 +0800
Subject: [PATCH] 125 【战斗】战斗系统 战斗技能

---
 Main/System/Battle/BattleEffectMgr.cs |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/Main/System/Battle/BattleEffectMgr.cs b/Main/System/Battle/BattleEffectMgr.cs
index 2c5e120..755757d 100644
--- a/Main/System/Battle/BattleEffectMgr.cs
+++ b/Main/System/Battle/BattleEffectMgr.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using UnityEngine;
 
 public class BattleEffectMgr : MonoBehaviour
@@ -45,12 +46,14 @@
     {
         if (effectId <= 0)
         {
+            BattleDebug.LogError("effect id <= 0");
             return null;
         }
 
         var effectCfg = EffectConfig.Get(effectId);
         if (null == effectCfg)
         {
+            BattleDebug.LogError("effect config is null, effectId : " + effectId);
             return null;
         }
 
@@ -59,12 +62,16 @@
             effectDict[effectId] = new List<BattleEffectPlayer>();
         }
 
-        BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, parent);
+        BattleEffectPlayer effectPlayer = BattleEffectPlayer.Create(effectId, battleField.battleRootNode.transform);
+        effectPlayer.transform.position = parent.position;
+        float effectScale = parent.transform.localScale.x;
+        effectPlayer.transform.localScale *= effectScale;
         effectPlayer.onDestroy += OnEffectDestroy;
         if (effectPlayer != null)
         {
             effectDict[effectId].Add(effectPlayer);
         }
+        effectPlayer.Play(true);
         return effectPlayer;
     }
 
@@ -80,7 +87,7 @@
         }
         else
         {
-            Debug.LogError("could not find effect in list, effectid : " + effectId);
+            BattleDebug.LogError("could not find effect in list, effectid : " + effectId);
         }
     }
 
@@ -98,16 +105,25 @@
 
     public void HaveRest()
     {
-        foreach (KeyValuePair<int, List<BattleEffectPlayer>> kvPair in effectDict)
+        List<int> fKeys = effectDict.Keys.ToList();
+
+        for (int i = 0; i < fKeys.Count; i++)
         {
-            foreach (BattleEffectPlayer effectPlayer in kvPair.Value)
+            List<BattleEffectPlayer> effectPlayers = effectDict[fKeys[i]];
+            while (effectPlayers.Count > 0)
             {
+                var effectPlayer = effectPlayers[0];
                 if (effectPlayer != null)
                 {
                     GameObject.DestroyImmediate(effectPlayer.gameObject);
                 }
+                else
+                {
+                    effectPlayers.RemoveAt(0);
+                }
             }
         }
+
         effectDict.Clear();
     }
 

--
Gitblit v1.8.0