From 51b0f6ed9f4e1d3bb6f8144470b46908c7699a96 Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期一, 11 五月 2026 16:20:37 +0800
Subject: [PATCH] Merge branch 'master' into h5version

---
 Main/System/Battle/SkillEffect/SkillEffect.cs |   65 +++++++++++++++++++++++++++++++-
 1 files changed, 62 insertions(+), 3 deletions(-)

diff --git a/Main/System/Battle/SkillEffect/SkillEffect.cs b/Main/System/Battle/SkillEffect/SkillEffect.cs
index 9bd1416..5231a17 100644
--- a/Main/System/Battle/SkillEffect/SkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -4,17 +4,35 @@
 
 public class SkillEffect
 {
+    protected SkillBase skillBase;
     protected SkillConfig skillConfig;
+    protected SkillSkinConfig skillSkinConfig;
     protected BattleObject caster;
     protected HB427_tagSCUseSkill tagUseSkillAttack;// 鐩爣鍒楄〃
 
     protected bool isFinish = false;
 
+    protected bool isFinishFrameEnd = false;
+
     protected Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit;
 
-    public SkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
+    // 缂撳瓨HurtList鐨凩ist鍓湰锛岄伩鍏嶆瘡娆nHit鍥炶皟鏃堕噸澶峊oList鍒嗛厤
+    private List<HB427_tagSCUseSkill.tagSCUseSkillHurt> _hurtListCache;
+    protected List<HB427_tagSCUseSkill.tagSCUseSkillHurt> HurtListAsList
     {
+        get
+        {
+            if (_hurtListCache == null)
+                _hurtListCache = new List<HB427_tagSCUseSkill.tagSCUseSkillHurt>(tagUseSkillAttack.HurtList);
+            return _hurtListCache;
+        }
+    }
+
+    public SkillEffect(SkillBase _skillBase, SkillConfig _skillConfig, SkillSkinConfig _skillSkinConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
+    {
+        skillBase = _skillBase;
         skillConfig = _skillConfig;
+        skillSkinConfig = _skillSkinConfig;
         caster = _caster;
         tagUseSkillAttack = _tagUseSkillAttack;
     }
@@ -23,7 +41,15 @@
     public virtual void Play(Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> _onHit)
     {
         onHit = _onHit;
-    }
+        if (skillSkinConfig.EffectId > 0)
+        {
+            caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.EffectId, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
+        }
+        if (skillSkinConfig.EffectId2 > 0)
+        {
+            caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.EffectId2, caster.GetRectTransform(), caster.Camp, caster.GetModelScale());
+        }
+     }
 
     public virtual void Run()
     {
@@ -37,11 +63,44 @@
 
     public virtual void OnMiddleFrameStart(int times)
     {
+        if (skillSkinConfig.MStartEffectId <= 0)
+            return;
+        //  涓憞鍥哄畾鐗规晥
+        caster.battleField.battleEffectMgr.PlayEffect(caster, skillSkinConfig.MStartEffectId, caster.GetTransform(), caster.Camp, caster.GetModelScale());
+    }
+    
+    /// <summary>
+    /// 鍚庢憞寮�濮�
+    /// </summary>
+    public virtual void OnFinalFrameStart()
+    {
 
+    }
+
+    /// <summary>
+    /// 鍚庢憞缁撴潫
+    /// </summary>
+    public virtual void OnFinalFrameEnd()
+    {
+        isFinishFrameEnd = true;
     }
     
     public virtual bool IsFinished()
     {
-        return isFinish;
+        return isFinish && isFinishFrameEnd;
+    }
+
+#if UNITY_EDITOR
+    /// <summary>鍗℃璇婃柇鐢細鎵撳嵃 SkillEffect 鍐呴儴 isFinish / isFinishFrameEnd 绛夋爣蹇椾綅銆�</summary>
+    public virtual string DumpState()
+    {
+        return $"{GetType().Name} isFinish={isFinish} isFinishFrameEnd={isFinishFrameEnd}";
+    }
+#endif
+
+    public virtual void ForceFinished()
+    {
+        isFinish = true;
+        isFinishFrameEnd = true;
     }
 }
\ No newline at end of file

--
Gitblit v1.8.0