Browse Source

修改bug

DESKTOP-FB72PO8\Administrator 3 days ago
parent
commit
2797cc43a3

+ 16 - 3
Assets/Scripts/GameLogic/Combat/Buff/BuffControl.cs

@@ -1,9 +1,11 @@
+using System;
 using Common.Utility.CombatEvent;
 using Fort23.Core;
 
 namespace GameLogic.Combat.Buff
 {
-    public class BuffControl
+    public class BuffControl : IDisposable
+
     {
         private BetterList<BuffBasic> _allBuff = new BetterList<BuffBasic>();
 
@@ -35,8 +37,6 @@ namespace GameLogic.Combat.Buff
             }
             else
             {
-        
-
                 buffBasic.AddBuffCount(source, buffInfo);
             }
         }
@@ -118,5 +118,18 @@ namespace GameLogic.Combat.Buff
                 _allBuff[i].Update(t);
             }
         }
+
+        public void Dispose()
+        {
+            for (int i = 0; i < _allBuff.Count; i++)
+            {
+                BuffBasic buffBasic = _allBuff[i];
+                buffBasic.Dispose();
+                CObjectPool.Instance.Recycle(buffBasic);
+            }
+
+            _allBuff.Clear();
+            _combatHeroEntity = null;
+        }
     }
 }

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

@@ -369,6 +369,7 @@ public class CombatHeroEntity : ShowBaiscEntity, ITimeLineAnimtion, ITimeLineGet
         }
 
         _isDis = true;
+        BuffControl.Dispose();
         combatHeroGameObject.Dispose();
         isDie = true;
         CombatHeroSkillControl.Dispose();

+ 1 - 0
Assets/Scripts/GameLogic/Combat/Skill/SkillBasic.cs

@@ -43,6 +43,7 @@ namespace GameLogic.Combat.Skill
         /// </summary>
         private bool isUse;
 
+        public float[] effectValue;
         public CombatHeroEntity CombatHeroEntity
         {
             get { return _combatHeroEntity; }

+ 7 - 7
Assets/Scripts/GameUI/UI/CombatPanel/BuffWidget.cs

@@ -7,7 +7,7 @@ namespace Fort23.Mono
     [UIBinding(prefab = "BuffWidget")]
     public partial class BuffWidget : UIComponent
     {
-        private BuffBasic buffBasic;
+        public BuffBasic buffBasic;
 
         private void Init()
         {
@@ -15,17 +15,17 @@ namespace Fort23.Mono
 
         public override void AddEvent()
         {
-            CombatEventManager.Instance.AddEventListener(CombatEventType.RemoveBuff,
-                AddBuff);
-            StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
+            // CombatEventManager.Instance.AddEventListener(CombatEventType.RemoveBuff,
+            //     AddBuff);
+            // StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
         }
 
         public override void DelEvent()
         {
-            CombatEventManager.Instance.RemoveEventListener(CombatEventType.RemoveBuff,
-                AddBuff);
+            // CombatEventManager.Instance.RemoveEventListener(CombatEventType.RemoveBuff,
+            //     AddBuff);
             buffBasic = null;
-            StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
+            // StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
         }
 
         public override void AddButtonEvent()

+ 29 - 3
Assets/Scripts/GameUI/UI/CombatPanel/HeroHpWidget.cs

@@ -17,7 +17,8 @@ namespace Fort23.Mono
         public int shieldSize = 50;
         public bool isFollowTarget = true;
 
-        
+        private BetterList<BuffWidget> buBetterList = new BetterList<BuffWidget>();
+
         private void Init()
         {
         }
@@ -41,11 +42,29 @@ namespace Fort23.Mono
             CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroDie, HeroDie);
             CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddBuff,
                 AddBuff);
-
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.RemoveBuff,
+                RemoveBuff);
             StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
             base.DormancyObj();
         }
 
+        private async void RemoveBuff(IEventData iEventData)
+        {
+            BuffEventData buffEventData = iEventData as BuffEventData;
+            if (buffEventData.target == combatHeroEntity)
+            {
+                for (int i = 0; i < buBetterList.Count; i++)
+                {
+                    BuffWidget buffWidget = buBetterList[i];
+                    if (buffWidget.buffBasic == buffEventData.BuffBasic)
+                    {
+                        UIManager.Instance.DormancyGComponent(buffWidget);
+                        buBetterList.RemoveAt(i);
+                    }
+                }
+            }
+        }
+
         private async void AddBuff(IEventData iEventData)
         {
             BuffEventData buffEventData = iEventData as BuffEventData;
@@ -54,6 +73,7 @@ namespace Fort23.Mono
                 BuffBasic buffBasic = buffEventData.BuffBasic;
                 BuffWidget buffWidget = await UIManager.Instance.CreateGComponent<BuffWidget>(null, buffRoot);
                 buffWidget.InitBuff(buffBasic);
+                buBetterList.Add(buffWidget);
             }
         }
 
@@ -103,12 +123,18 @@ namespace Fort23.Mono
         private void HeroDie(IEventData iEventData)
         {
             HeroDieEventData heroHpUpdateEventData = iEventData as HeroDieEventData;
-            if (heroHpUpdateEventData.combatHeroEntity == combatHeroEntity && combatHeroEntity.IsEnemy)
+            if (heroHpUpdateEventData.combatHeroEntity == combatHeroEntity)
             {
+                for (int i = 0; i < buBetterList.Count; i++)
+                {
+                    UIManager.Instance.DormancyGComponent(buBetterList[i]);
+                }
+                buBetterList.Clear();
                 if (string.IsNullOrEmpty(poolObjName))
                 {
                     return;
                 }
+
                 GObjectPool.Instance.Recycle(this);
             }
         }

+ 1 - 1
Assets/Scripts/GameUI/UI/CombatPanel/MagicWeaponWidget.cs

@@ -18,7 +18,7 @@ namespace Fort23.Mono
 
         public override void DelEvent()
         {
-            StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
+            StaticUpdater.Instance.RemoveLateUpdateCallBack(Update);
         }
 
         public override void AddButtonEvent()