From fd865ddcd03a76ca2fb2794b2a8639e33492c661 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 30 一月 2026 11:51:30 +0800
Subject: [PATCH] 125 战斗 bug堆栈的一些防错
---
Main/System/Battle/BattleField/BattleField.cs | 4 +-
Main/System/Battle/BattleUtility.cs | 17 ++++++--
Main/System/Battle/UIComp/BattleHeroInfoBar.cs | 44 +++++++++++++++++++++
3 files changed, 58 insertions(+), 7 deletions(-)
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index e6a8219..6435401 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -657,7 +657,7 @@
foreach (var obj in blueTeam)
{
- if (obj is MinggeBattleObject)
+ if (obj == null || obj is not HeroBattleObject)
{
continue;
}
@@ -674,7 +674,7 @@
{
foreach (var obj in blueTeam)
{
- if (obj is MinggeBattleObject)
+ if (obj == null || obj is not HeroBattleObject)
{
continue;
}
diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index 1bcfa37..f2021c7 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -114,16 +114,25 @@
string result = string.Empty;
- // 濡傛灉鏄棯閬挎垨鍏嶇柅 鍒欏彧鏄剧ず瀵瑰簲鏂囧瓧锛屼笉鏄剧ず鏁板瓧
- if (damage.IsType(DamageType.Dodge) || damage.IsType(DamageType.Immune) || damage.IsType(DamageType.CompletelyDodge))
+ if (config != null)
{
- result += (char)config.prefix;
+ // 濡傛灉鏄棯閬挎垨鍏嶇柅 鍒欏彧鏄剧ず瀵瑰簲鏂囧瓧锛屼笉鏄剧ず鏁板瓧
+ if (damage.IsType(DamageType.Dodge) || damage.IsType(DamageType.Immune) || damage.IsType(DamageType.CompletelyDodge))
+ {
+ result += (char)config.prefix;
+ }
+ else
+ {
+ result = ConvertToArtFont(config, damage.damage);
+ }
}
else
{
- result = ConvertToArtFont(config, damage.damage);
+ result = damage.damage.ToString();
+ Debug.LogError("鎵句笉鍒板搴旂殑浼ゅ鏁板瓧閰嶇疆 attackType : " + damage.attackType);
}
+
return result;
}
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index 4f7371b..c40229b 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -295,7 +295,49 @@
/// </summary>
public void UpdateDamage(BattleDmgInfo dmgInfo)
{
- // 鍔犲叆闃熷垪
+ // 楠岃瘉鏁版嵁鏈夋晥鎬э紝闃叉绌哄紩鐢�
+ if (dmgInfo?.battleHurtParam == null)
+ return;
+
+ // 妫�鏌ュ彈鍑昏�呭璞℃湁鏁堟��
+ if (dmgInfo.battleHurtParam.hurter?.hurtObj != null)
+ {
+ var hurtObj = dmgInfo.battleHurtParam.hurter.hurtObj;
+ // 妫�鏌ュ璞℃槸鍚﹀凡琚攢姣�
+ if (hurtObj == null || hurtObj.Equals(null))
+ {
+ Debug.LogWarning($"[UpdateDamage] 鍙楀嚮鑰呭璞″凡琚攢姣侊紝璺宠繃浼ゅ鏇存柊");
+ return;
+ }
+
+ // 楠岃瘉鏄惁鑳藉畨鍏ㄨ幏鍙� maxHp锛堥棿鎺ユ鏌� HeroBattleObject 鍐呴儴鐘舵�侊級
+ if (hurtObj is HeroBattleObject && hurtObj.GetMaxHp() <= 0)
+ {
+ Debug.LogWarning($"[UpdateDamage] 鍙楀嚮鑰� maxHp 鏃犳晥锛岃烦杩囦激瀹虫洿鏂�");
+ return;
+ }
+ }
+
+ // 妫�鏌ユ柦娉曡�呭璞℃湁鏁堟��
+ if (dmgInfo.battleHurtParam.caster?.casterObj != null)
+ {
+ var casterObj = dmgInfo.battleHurtParam.caster.casterObj;
+ // 妫�鏌ュ璞℃槸鍚﹀凡琚攢姣�
+ if (casterObj == null || casterObj.Equals(null))
+ {
+ Debug.LogWarning($"[UpdateDamage] 鏂芥硶鑰呭璞″凡琚攢姣侊紝璺宠繃浼ゅ鏇存柊");
+ return;
+ }
+
+ // 楠岃瘉鏄惁鑳藉畨鍏ㄨ幏鍙� maxHp
+ if (casterObj is HeroBattleObject && casterObj.GetMaxHp() <= 0)
+ {
+ Debug.LogWarning($"[UpdateDamage] 鏂芥硶鑰� maxHp 鏃犳晥锛岃烦杩囦激瀹虫洿鏂�");
+ return;
+ }
+ }
+
+ // 鏁版嵁楠岃瘉閫氳繃锛屽姞鍏ラ槦鍒�
damageUpdateQueue.Enqueue(dmgInfo);
}
--
Gitblit v1.8.0