From ee032c35c49d47daba2dee1580b3abbe59d59bd8 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 01 九月 2025 16:29:46 +0800
Subject: [PATCH] 125 【战斗】战斗系统 战斗npc消失的问题处理
---
Main/System/Battle/BattleObject/BattleObject.cs | 13 ++++
Main/System/Battle/Skill/SkillBase.cs | 45 ++++++++++-----
Main/System/Battle/BattleHUDWin.cs | 14 ----
Main/System/Battle/BattleObject/BattleObjMgr.cs | 15 +++-
Main/System/Battle/Skill/DirectlyHealSkill.cs | 17 -----
Main/System/Battle/UIComp/BattleHeroInfoBar.cs | 1
Main/System/Battle/Skill/RebornSkill.cs | 8 --
Main/System/Battle/UIComp/BattleTips.cs | 10 +--
8 files changed, 59 insertions(+), 64 deletions(-)
diff --git a/Main/System/Battle/BattleHUDWin.cs b/Main/System/Battle/BattleHUDWin.cs
index 7377bc6..cb201c6 100644
--- a/Main/System/Battle/BattleHUDWin.cs
+++ b/Main/System/Battle/BattleHUDWin.cs
@@ -41,8 +41,6 @@
{
base.OnPreOpen();
EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
- EventBroadcast.Instance.AddListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_MOUNTED, OnBuffMounted);
- EventBroadcast.Instance.AddListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_DISAPEAR, OnBuffDisapear);
damagePrefabPool = GameObjectPoolManager.Instance.RequestPool(UILoader.LoadPrefab("DamageContent"));
// buffIconPrefabPool = GameObjectPoolManager.Instance.RequestPool();
// buffLabelPrefabPool = GameObjectPoolManager.Instance.RequestPool(ResManager.Instance.LoadAsset<GameObject>("UIComp", "BuffContent"));
@@ -52,8 +50,6 @@
{
base.OnPreClose();
EventBroadcast.Instance.RemoveListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
- EventBroadcast.Instance.RemoveListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_MOUNTED, OnBuffMounted);
- EventBroadcast.Instance.RemoveListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_DISAPEAR, OnBuffDisapear);
}
protected override void OnOpen()
@@ -115,16 +111,6 @@
out anchoredPos);
contentRect.anchoredPosition = anchoredPos;
- }
-
- private void OnBuffMounted(BattleObject bo, SkillConfig buffConfig)
- {
-
- }
-
- private void OnBuffDisapear(BattleObject bo, SkillConfig buffConfig)
- {
-
}
public void SetBattleField(BattleField _battleField)
diff --git a/Main/System/Battle/BattleObject/BattleObjMgr.cs b/Main/System/Battle/BattleObject/BattleObjMgr.cs
index d539ef7..833e788 100644
--- a/Main/System/Battle/BattleObject/BattleObjMgr.cs
+++ b/Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -110,9 +110,15 @@
{
if (allBattleObjDict.TryGetValue((int)objID, out BattleObject battleObj))
{
+ if (battleObj.Camp == BattleCamp.Red)
+ {
+ redCampDict.Remove(battleObj.teamHero.positionNum);
+ }
+ else
+ {
+ blueCampDict.Remove(battleObj.teamHero.positionNum);
+ }
allBattleObjDict.Remove((int)objID);
- redCampDict.Remove((int)objID);
- blueCampDict.Remove((int)objID);
BattleObjectFactory.DestroyBattleObject((int)objID, battleObj);
}
}
@@ -123,10 +129,11 @@
foreach (var item in campDict)
{
BattleObject battleObj = item.Value;
+ var objId = item.Key;
if (battleObj != null)
{
- allBattleObjDict.Remove(battleObj.ObjID);
- BattleObjectFactory.DestroyBattleObject(item.Key, battleObj);
+ allBattleObjDict.Remove(objId);
+ BattleObjectFactory.DestroyBattleObject(objId, battleObj);
}
}
campDict.Clear();
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index bf8fbe8..f7b532a 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -246,7 +246,18 @@
motionBase.PlayAnimation(MotionName.hit, false);
// 鎵h
+
teamHero.curHp -= _totalDamage;
+ }
+
+ public void SuckHp(uint suckHP)
+ {
+
+ }
+
+ public void HurtByReflect(uint bounceHP)
+ {
+
}
// 闂伩寮�濮�
@@ -367,6 +378,8 @@
+
+
#if UNITY_EDITOR_STOP_USING
public void EditorRevive()
{
diff --git a/Main/System/Battle/Skill/DirectlyHealSkill.cs b/Main/System/Battle/Skill/DirectlyHealSkill.cs
index bf4202e..9facf9f 100644
--- a/Main/System/Battle/Skill/DirectlyHealSkill.cs
+++ b/Main/System/Battle/Skill/DirectlyHealSkill.cs
@@ -47,21 +47,4 @@
base.OnHitTargets(_healIndex, healList);
}
- protected override void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
- {
- base.OnHitEachTarget(target, totalDamage, damageList, ref hurt);
- }
-
-
- // // 涓憞缁撴潫
- // protected override void OnActiveSkillFrame()
- // {
-
- // }
-
- // // 鍚庢憞缁撴潫
- // protected override void OnEndSkillFrame()
- // {
-
- // }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/RebornSkill.cs b/Main/System/Battle/Skill/RebornSkill.cs
index e85c175..5443761 100644
--- a/Main/System/Battle/Skill/RebornSkill.cs
+++ b/Main/System/Battle/Skill/RebornSkill.cs
@@ -39,14 +39,6 @@
}
}
- protected override void OnHitTargets(int _hitIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hitList)
- {
- base.OnHitTargets(_hitIndex, hitList);
- }
- protected override void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
- {
- base.OnHitEachTarget(target, totalDamage, damageList, ref hurt);
- }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 3b9b52b..a3c580b 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -362,19 +362,40 @@
continue;
}
- // 浼ゅ鍒嗗竷 (涓囧垎姣�)
- int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
-
- long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
-
- // 淇濊瘉鎵�鏈夊垎閰嶉」鍔犺捣鏉ョ瓑浜巘otalDamage锛岄伩鍏嶅洜鏁撮櫎瀵艰嚧鐨勮宸�
- List<long> damageList = BattleUtility.DivideDamageToList(damageDivide, totalDamage);
-
- OnHitEachTarget(target, totalDamage, damageList, ref hurt);
+ OnHitEachTarget(_hitIndex, target, hurt);
}
HandleDead();
}
+
+
+ protected virtual void OnHitEachTarget(int _hitIndex, BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
+ {
+ // 浼ゅ鍒嗗竷 (涓囧垎姣�)
+ int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
+
+ long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
+
+ // 淇濊瘉鎵�鏈夊垎閰嶉」鍔犺捣鏉ョ瓑浜巘otalDamage锛岄伩鍏嶅洜鏁撮櫎瀵艰嚧鐨勮宸�
+ List<long> damageList = BattleUtility.DivideDamageToList(damageDivide, totalDamage);
+ // public uint ObjID;
+ // public uint AttackTypes; // 椋樿绫诲瀷姹囨�伙紝鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�9-闂伩
+ // public uint HurtHP; // 椋樿鍊硷紝姹備綑浜块儴鍒�
+ // public uint HurtHPEx; // 椋樿鍊硷紝鏁撮櫎浜块儴鍒�
+ // public uint CurHP; // 鏇存柊鍓╀綑琛�閲忥紝姹備綑浜块儴鍒�
+ // public uint CurHPEx; // 鏇存柊鍓╀綑琛�閲忥紝鏁撮櫎浜块儴鍒�
+ // public uint SuckHP; // 鏈浼ゅ杞寲鐨勫惛琛�閲�
+ // public uint BounceHP; // 鏈浼ゅ鍙嶅脊鐨勪激瀹抽噺
+
+
+ // TODO YYL AttackTypes 瑕佽〃鐜版垚浠�涔堟牱鍛紵 鏀寔澶氱绫诲瀷骞跺瓨锛屽鏃犺闃插尽涓旀毚鍑诲悓鏃惰鏍兼尅锛屼簩杩涘埗鎴栬繍绠楁渶缁堝�硷紱0-澶辫触锛�1-鏅�氾紱2-鍥炶锛�5-鏍兼尅锛�6-鏃犺闃插尽锛�7-鏆村嚮锛�9-闂伩
+ target.Hurt(damageList, totalDamage, hurt.AttackTypes);
+
+ // TODO YYL 杩欓噷鏄鍋氱粺涓�璁$畻鍚庡啀hurt璺焥uckhp杩樻槸鎬庢牱
+ // caster.SuckHp(hurt.SuckHP);// 鍚歌
+ // caster.HurtByReflect(hurt.BounceHP);// 鍙嶅脊浼ゅ
+ }
+
protected void HandleDead()
{
@@ -484,12 +505,6 @@
}
-
- protected virtual void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
- {
- target.Hurt(damageList, totalDamage, hurt.AttackTypes);
-
- }
protected void CheckAfterDeadhPack()
{
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index 755977e..f1a37a6 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -143,6 +143,7 @@
public void Run()
{
+ // 鍊掑簭閬嶅巻 鍒犻櫎.run閲屽垹闄ゅ厓绱犱笉鍙楀奖鍝�
for (int i = tipsList.Count - 1; i >= 0; i--)
{
tipsList[i].Run();
diff --git a/Main/System/Battle/UIComp/BattleTips.cs b/Main/System/Battle/UIComp/BattleTips.cs
index a16ee76..d1b8e07 100644
--- a/Main/System/Battle/UIComp/BattleTips.cs
+++ b/Main/System/Battle/UIComp/BattleTips.cs
@@ -10,12 +10,7 @@
public float showTime = 0.4f;
public float timer = 0f;
- protected RectTransform rectTransform;
-
- void Awake()
- {
- rectTransform = gameObject.AddMissingComponent<RectTransform>();
- }
+ public RectTransform rectTransform;
public Text tipText;
@@ -33,6 +28,9 @@
// 涓嶈浣跨敤update
public void Run()
{
+ if (!gameObject.activeSelf)
+ return;
+
if (timer >= showTime)
{
OnFinish?.Invoke();
--
Gitblit v1.8.0