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