浏览代码

修改bug

DESKTOP-FB72PO8\Administrator 1 天之前
父节点
当前提交
71cafbf7c5

+ 6 - 1
Assets/Scripts/GameLogic/Combat/CombatEvent/CombatEventType.cs

@@ -126,6 +126,11 @@
         /// 法宝对拼结束
         /// </summary>
         FaBaoDuiPingFinish,
-
+        
+        /// <summary>
+        /// 法宝技能CD结束
+        /// </summary>
+        MagicWeaponCDFinish,
+    
     }
 }

+ 15 - 0
Assets/Scripts/GameLogic/Combat/CombatEvent/MagicWeaponCDFinish.cs

@@ -0,0 +1,15 @@
+using Core.Utility.Event;
+using GameLogic.Combat.Hero;
+
+namespace Common.Utility.CombatEvent
+{
+    public class MagicWeaponCDFinish : EventDataBasic<MagicWeaponCDFinish>
+    {
+        public CombatMagicWeaponEntity CombatMagicWeaponEntity;
+
+        protected override void ProDispose()
+        {
+            CombatMagicWeaponEntity = null;
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/CombatEvent/MagicWeaponCDFinish.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 6ba476cc59e448fa8efab6f42041adcd
+timeCreated: 1761547346

+ 16 - 0
Assets/Scripts/GameLogic/Combat/CombatEvent/MagicWeaponCollision.cs

@@ -0,0 +1,16 @@
+using Core.Utility.Event;
+using GameLogic.Combat.Hero;
+
+namespace Common.Utility.CombatEvent
+{
+    public class MagicWeaponCollision: EventDataBasic<MagicWeaponCollision>
+    {
+        public CombatMagicWeaponEntity a;
+        public CombatMagicWeaponEntity b;
+        protected override void ProDispose()
+        {
+            a = null;
+            b = null;
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/CombatEvent/MagicWeaponCollision.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d14a8c8f04bd44728872b9d4a3a602ed
+timeCreated: 1761547413

+ 11 - 9
Assets/Scripts/GameLogic/Combat/CombatTool/CombatHeroController.cs

@@ -6,6 +6,7 @@ using Excel2Json;
 using Fort23.Core;
 using Fort23.UTool;
 using GameLogic.Combat.Hero;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
 using UnityEngine;
 using Utility.UITool;
 using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
@@ -26,7 +27,7 @@ namespace GameLogic.Combat.CombatTool
         private BetterList<CombatHeroEntity> heroDispose = new BetterList<CombatHeroEntity>();
 
         // public CombatHeroEntity playerHeroEntity;
-        
+
         public float moveSpeed = 2f;
         public bool isFlight;
         private bool _isFlightCameraFinish;
@@ -117,13 +118,9 @@ namespace GameLogic.Combat.CombatTool
             combatHeroEntity.HeroResurrection();
         }
 
-      
 
         public void Update(float t)
         {
-           
-
-
             for (int i = 0; i < myHero.Count; i++)
             {
                 myHero[i].Update(t);
@@ -138,8 +135,6 @@ namespace GameLogic.Combat.CombatTool
             {
                 heroDie[i].Update(t);
             }
-
-         
         }
 
         public void LateUpdate(float t)
@@ -158,7 +153,6 @@ namespace GameLogic.Combat.CombatTool
             }
         }
 
-     
 
         public void AddHeroDie(CombatHeroEntity hero)
         {
@@ -291,7 +285,15 @@ namespace GameLogic.Combat.CombatTool
 
             for (int i = 0; i < heroDie.Count; i++)
             {
-                heroDie[i].Dispose();
+                CombatHeroEntity combatHeroEntity = heroDie[i];
+                if (combatHeroEntity.isPlayer)
+                {
+                    combatHeroEntity.DisposeForOnetCombat();
+                }
+                else
+                {
+                    combatHeroEntity.Dispose();
+                }
             }
 
             myHero.Clear();

+ 21 - 1
Assets/Scripts/GameLogic/Combat/CombatTool/MagicWeaponCollisionInfo.cs

@@ -38,8 +38,11 @@ namespace GameLogic.Combat.CombatTool
 
         private long _kouChuValue;
 
+        private bool _isDispose;
+
         public void Init(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b, int id)
         {
+            _isDispose = false;
             this.id = id;
             if (a.IsEnemy)
             {
@@ -91,12 +94,17 @@ namespace GameLogic.Combat.CombatTool
                         particleSystemPool.transform.rotation =
                             a.GameObject.transform.rotation;
                         ParticleSystemPool = particleSystemPool;
-                        if (!_isPengZhuang)
+                        if (!_isPengZhuang || _isDispose)
                         {
                             GObjectPool.Instance.Recycle(ParticleSystemPool);
                         }
                     });
                 loopDuiPing = await AudioManager.Instance.PlayAudio("fb_duiping.wav", true);
+                if (_isDispose && loopDuiPing != null)
+                {
+                    loopDuiPing.Finish();
+                    loopDuiPing = null;
+                }
             }
             else
             {
@@ -328,10 +336,22 @@ namespace GameLogic.Combat.CombatTool
                 b.MagicWeaponCollisionId = -1;
             }
 
+            Dispose();
+        }
+
+        public override void Dispose()
+        {
             GObjectPool.Instance.Recycle(ParticleSystemPool);
+            if (loopDuiPing != null)
+            {
+                loopDuiPing.Finish();
+                loopDuiPing = null;
+            }
+
             ParticleSystemPool = null;
             triigerCount = 0;
             _isPengZhuang = false;
+            _isDispose = true;
         }
 
         public string tag { get; }

+ 4 - 0
Assets/Scripts/GameLogic/Combat/CombatTool/MagicWeaponCombatSence.cs

@@ -39,6 +39,10 @@ namespace GameLogic.Combat.CombatTool
 
         public void CloseSecene()
         {
+            for (magicWeaponCollisionInfoList.Begin(); magicWeaponCollisionInfoList.Next();)
+            {
+                magicWeaponCollisionInfoList.Value.Dispose();
+            }
             magicWeaponCollisionInfoList.Clear();
             for (int i = 0; i < _enemyMagicWeaponList.Count; i++)
             {

+ 1 - 0
Assets/Scripts/GameLogic/Combat/CombatType/LevelBattleCombatType.cs

@@ -177,6 +177,7 @@ namespace GameLogic.Combat.CombatType
 
             CombatHeroEntity heroEntity = new CombatHeroEntity();
 
+            heroEntity.isPlayer = true;
             heroEntity.IsEnemy = false;
             heroEntity.number = 0;
 

+ 1 - 1
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroEntity.cs

@@ -479,7 +479,7 @@ public class CombatHeroEntity : ShowBaiscEntity, ITimeLineAnimtion, ITimeLineGet
         {
             return;
         }
-
+        // heroMagicWeaponControl?.Dispose();
         _isDis = true;
         BuffControl.Dispose();
         combatHeroGameObject.Dispose();

+ 13 - 1
Assets/Scripts/GameLogic/Combat/Hero/CombatMagicWeaponEntity.cs

@@ -30,6 +30,7 @@ namespace GameLogic.Combat.Hero
         /// </summary>
         public float cdAddSpeed;
 
+        private bool isReadyFinish;
         // public float cdSpeed=1;
         /// <summary>
         /// 是否拥有法宝宝典
@@ -209,7 +210,7 @@ namespace GameLogic.Combat.Hero
             _HpBl = _faBaoInfo.FabaoPowerupConfig.Power;
             MaxHp= _HpBl;
             cd = MaxCd;
-
+            isReadyFinish = false;
             _rootMagicWeaponControl.UseMagicWeapon(this);
         }
 
@@ -237,6 +238,17 @@ namespace GameLogic.Combat.Hero
                 if (b1008 == null)
                 {
                     cd -= t;
+                    if (cd <= 0&&!isReadyFinish)
+                    {
+                        isReadyFinish = true;
+                        MagicWeaponCDFinish magicWeaponCDFinish = MagicWeaponCDFinish.Create();
+                        magicWeaponCDFinish.CombatMagicWeaponEntity= this;
+                        CombatEventManager.Instance.Dispatch(CombatEventType.MagicWeaponCDFinish,
+                            magicWeaponCDFinish);
+                        
+                    }
+
+                  
                     if ( IsCanUse())
                     {
                         if (_rootMagicWeaponControl.isAutoUse && cd < -1f)//自动的延迟一秒释放

+ 11 - 3
Assets/Scripts/GameLogic/Paritcle/ParitcleLogic/FxAILogicBasic.cs

@@ -101,6 +101,7 @@ namespace Common.Combat.FxAILogic
         public bool isInit = false;
 
         private bool isPlayStartAudio = false;
+
         public void Init(Vector3 startPos,
             TimeLineEventParticleLogicBasic timeLineEventParticleLogicBasic, ILifetCycleHitPoint attTarget,
             SpecialDotInfo specialDotInfo = null)
@@ -164,7 +165,6 @@ namespace Common.Combat.FxAILogic
         /// </summary>
         public void DeductSkillStrength(long hp)
         {
-            
         }
 
         // private void Detection()
@@ -184,9 +184,17 @@ namespace Common.Combat.FxAILogic
         {
             FinishHit(CurrPos, hitFxName);
         }
+
         public void PlayPengZhuangHit()
         {
-            FinishHit(CurrPos, pengZhuangHitFxName);
+            if (string.IsNullOrEmpty(pengZhuangHitFxName))
+            {
+                FinishHit(CurrPos, hitFxName);
+            }
+            else
+            {
+                FinishHit(CurrPos, pengZhuangHitFxName);
+            }
         }
 
         protected void FinishHit(Vector3 pos, string hitFxName)
@@ -248,7 +256,7 @@ namespace Common.Combat.FxAILogic
                 isPlayStartAudio = true;
                 if (!string.IsNullOrEmpty(startAudioName))
                 {
-                    AudioManager.Instance.Play(startAudioName,false);
+                    AudioManager.Instance.Play(startAudioName, false);
                 }
             }