From c5c6c915069a1f93d10ee3d2c897beca1e100c8d Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 12 九月 2025 18:44:25 +0800
Subject: [PATCH] 125 战斗 诸葛果 连续普攻问题修复 治疗技能增加

---
 Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs          |    8 +
 Main/System/Battle/Skill/SkillFactory.cs                           |    6 
 Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs    |    6 
 Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs  |    8 
 Main/System/Battle/Motion/MotionBase.cs                            |    3 
 Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs   |   11 +-
 Main/System/Battle/SkillEffect/BulletSkillEffect.cs                |   67 +++++++------
 Main/System/Battle/BattleField/BattleField.cs                      |    9 +
 /dev/null                                                          |    8 -
 Main/Component/UI/Common/RendererAdjuster.cs                       |   72 ++++++++++++++
 Main/System/Battle/RecordPlayer/RecordPlayer.cs                    |    8 
 Main/System/Battle/BattleObject/BattleObject.cs                    |    8 -
 Main/System/Battle/Skill/SkillBase.cs                              |    2 
 Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs    |    6 
 Main/System/Battle/Skill/DirectlyHealSkill.cs                      |   28 ++---
 Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs |    6 
 Main/System/Battle/UIComp/BattleHeroInfoBar.cs                     |    4 
 Main/Component/UI/Common/RendererAdjuster.cs.meta                  |   11 ++
 Main/System/Battle/Define/DamageType.cs                            |    3 
 19 files changed, 172 insertions(+), 102 deletions(-)

diff --git a/Main/Component/UI/Common/RendererAdjuster.cs b/Main/Component/UI/Common/RendererAdjuster.cs
new file mode 100644
index 0000000..56b9b23
--- /dev/null
+++ b/Main/Component/UI/Common/RendererAdjuster.cs
@@ -0,0 +1,72 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using System;
+
+public class RendererAdjuster : MonoBehaviour
+{
+    public int renderQueue = 3000;
+
+    public Canvas canvas;
+
+    public int sortingOrderOffset = 1;
+
+    public string customSortingLayer = "UI";
+
+    public List<Renderer> renderers = new List<Renderer>();
+
+    public void Awake()
+    {
+        UpdateComps();
+    }
+
+    protected void UpdateComps()
+    {
+        renderers.Clear();
+        renderers.AddRange(gameObject.GetComponentsInChildren<Renderer>(true));
+
+        canvas = GetComponentInParent<Canvas>();
+    }
+
+    public void SetParentCanvas(Canvas _canvas)
+    {
+        canvas = _canvas;
+        this.DelayFrame(UpdateSortingOrder);
+    }
+
+    public void UpdateSortingOrder()
+    {
+        int canvasSortingOrder = 0;
+
+        // 鑾峰彇鐖剁骇Canvas鐨勬帓搴忛『搴�
+        if (canvas != null)
+        {
+            canvasSortingOrder = canvas.sortingOrder;
+        }
+        else
+        {
+            // 濡傛灉娌℃湁鎵惧埌鐖剁骇Canvas锛屽垯浣跨敤榛樿鍊�
+            canvasSortingOrder = 0;
+        }
+
+        // 灏嗙壒鏁堢殑鎺掑簭椤哄簭璁剧疆涓篊anvas鎺掑簭椤哄簭鍔犱笂鍋忕Щ閲�
+        ApplySortingSettings(canvasSortingOrder + sortingOrderOffset, customSortingLayer);
+    }
+
+    private void ApplySortingSettings(int sortingOrder, string sortingLayer)
+    {
+        foreach (Renderer renderer in renderers)
+        {
+            if (renderer != null)
+            {
+                renderer.sortingOrder = sortingOrder;
+                renderer.material.renderQueue = renderQueue; // 璁剧疆娓叉煋闃熷垪
+                // renderer.material.renderQueue = overlayRQ;
+                if (!string.IsNullOrEmpty(sortingLayer))
+                {
+                    renderer.sortingLayerName = sortingLayer;
+                }
+            }
+        }
+    }
+}
diff --git a/Main/Component/UI/Common/RendererAdjuster.cs.meta b/Main/Component/UI/Common/RendererAdjuster.cs.meta
new file mode 100644
index 0000000..ba23f2e
--- /dev/null
+++ b/Main/Component/UI/Common/RendererAdjuster.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 75517d945fb16024d9ab09ca21288a01
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Main/Core/GameEngine/Login.meta b/Main/Core/GameEngine/Login.meta
deleted file mode 100644
index e99982a..0000000
--- a/Main/Core/GameEngine/Login.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 8eda8f1b1cda90b408dd25bd730b25ab
-folderAsset: yes
-DefaultImporter:
-  externalObjects: {}
-  userData: 
-  assetBundleName: 
-  assetBundleVariant: 
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 3ddafd5..19a23e5 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -372,6 +372,15 @@
                 blocker.SetParentCanvas(canvas);
             }
         }
+
+        RendererAdjuster[] adjusters = battleRootNode.GetComponentsInChildren<RendererAdjuster>(true);
+        if (null != adjusters)
+        {
+            foreach (var adjuster in adjusters)
+            {
+                adjuster.SetParentCanvas(canvas);
+            }
+        }
     }
 
     public void StartBattle(Action onMoveComplete)
diff --git a/Main/System/Battle/BattleObject/BattleObject.cs b/Main/System/Battle/BattleObject/BattleObject.cs
index f115a19..54572e5 100644
--- a/Main/System/Battle/BattleObject/BattleObject.cs
+++ b/Main/System/Battle/BattleObject/BattleObject.cs
@@ -84,7 +84,6 @@
         Camp = _camp;
         motionBase = new MotionBase();
         motionBase.Init(heroGo.GetComponentInChildren<SkeletonGraphic>(true));
-        motionBase.onAnimationComplete += OnAnimationComplete;
         buffMgr = new BattleObjectBuffMgr();
         buffMgr.Init(this);
 
@@ -120,7 +119,6 @@
 
     public virtual void Destroy()
     {
-        motionBase.onAnimationComplete -= OnAnimationComplete;
 
         motionBase.Release();
         motionBase = null;
@@ -319,12 +317,6 @@
             OnDeadAnimationComplete();
             _onDeathAnimationComplete?.Invoke();
         });
-    }
-
-    //  涓嶄竴瀹氬彲闈� 鏈夋椂鍊欎細鎻掑叆鍏朵粬鍔ㄤ綔灏卞畬浜�
-    protected virtual void OnAnimationComplete(string motionName)
-    {
-
     }
 
     protected virtual void OnDeadAnimationComplete()
diff --git a/Main/System/Battle/Define/DamageType.cs b/Main/System/Battle/Define/DamageType.cs
index cf04cb2..c0c7ffb 100644
--- a/Main/System/Battle/Define/DamageType.cs
+++ b/Main/System/Battle/Define/DamageType.cs
@@ -4,7 +4,6 @@
 
 // 鑰孉ttackType涓�鑸唬琛ㄧ殑鏄湰娆℃妧鑳界殑浼ゅ椋樿绫诲瀷锛屽鏅�氫激瀹筹紝鏆村嚮浼ゅ銆佹牸鎸°�佸洖琛�绛�
 
-// 浼よ绫诲瀷锛� 1-鏅�氾紱2-鍥炶锛�3-鍙嶅脊锛�4-娴佽锛�5-鏍兼尅锛�7-鏆村嚮锛�9-闂伩
 
 //
 // 101011111
@@ -15,8 +14,6 @@
 {
 	Damage = 2,
 	Recovery = 4,
-	Reflect = 8,
-	Bloody = 16,
 	Block = 32,
 	Crit = 128,
 	Dodge = 512
diff --git a/Main/System/Battle/Motion/MotionBase.cs b/Main/System/Battle/Motion/MotionBase.cs
index 7a35dd2..b5fb81b 100644
--- a/Main/System/Battle/Motion/MotionBase.cs
+++ b/Main/System/Battle/Motion/MotionBase.cs
@@ -24,7 +24,6 @@
     // 鍔ㄧ敾浜嬩欢
     public Action OnAttackAnimationComplete;
     public Action OnHitAnimationComplete;
-    public Action<string> onAnimationComplete;
     
     private List<Action> runActionList = new List<Action>();
 
@@ -333,8 +332,6 @@
             OnHitAnimationComplete?.Invoke();
             PlayAnimation(MotionName.idle, true);
         }
-
-        onAnimationComplete?.Invoke(animation);
         
         // 鍙皟鐢ㄦ湰娆rackEntry鐨勫洖璋�
         if (trackEntryCompleteDict.TryGetValue(trackEntry, out var cb))
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index 769415f..b0dc553 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -28,7 +28,7 @@
 
     public void PlayRecord(RecordAction recordAction)
     {
-        BattleDebug.LogError("Enqueue record action " + recordAction.GetType());
+        // BattleDebug.LogError("Enqueue record action " + recordAction.GetType());
         recordActionQueue.Enqueue(recordAction);
     }
 
@@ -42,7 +42,7 @@
 
     public void InsertRecord(RecordAction recordAction)
     {
-        BattleDebug.LogError("Insert record action " + recordAction.GetType());
+        // BattleDebug.LogError("Insert record action " + recordAction.GetType());
         if (currentRecordAction != null)
         {
             Queue<RecordAction> tempQueue = new Queue<RecordAction>();
@@ -124,7 +124,7 @@
 
         if (currentRecordAction != null && currentRecordAction.IsFinished())
         {
-            BattleDebug.LogError("record action " + currentRecordAction.GetType() + " play finished");
+            // BattleDebug.LogError("record action " + currentRecordAction.GetType() + " play finished");
             currentRecordAction = null;
             isWaitingNextAction = true;
             waitTimer = 0f;
@@ -136,7 +136,7 @@
             if (recordActionQueue.Count > 0)
             {
                 currentRecordAction = recordActionQueue.Dequeue();
-                BattleDebug.LogError("play record action " + currentRecordAction.GetType());
+                // BattleDebug.LogError("play record action " + currentRecordAction.GetType());
             }
         }
     }
diff --git a/Main/System/Battle/Skill/DirectlyHealSkill.cs b/Main/System/Battle/Skill/DirectlyHealSkill.cs
index 0df1017..4324a11 100644
--- a/Main/System/Battle/Skill/DirectlyHealSkill.cs
+++ b/Main/System/Battle/Skill/DirectlyHealSkill.cs
@@ -6,7 +6,6 @@
 
 public class DirectlyHealSkill : SkillBase
 {
-	protected SkillEffect skillEffect;
 
 	public DirectlyHealSkill(BattleObject _caster, SkillConfig _skillCfg,
 			HB427_tagSCUseSkill _vNetData, List<GameNetPackBasic> _packList, BattleField _battleField)
@@ -16,23 +15,16 @@
 	}
 
 
-	// //	鍓嶆憞缁撴潫
-	// public override void OnStartSkillFrameEnd()
-	// {
-	// 	skillEffect = SkillEffectFactory.CreateSkillEffect(
-	// 			caster,
-	// 			skillConfig,
-	// 			tagUseSkillAttack
-	// 		);
-	// 	if (skillEffect != null)
-	// 	{
-	// 		skillEffect.Play(OnHitTargets);
-	// 	}
-	// }
+	protected override void OnHitTargets(int _hitIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hitList)
+	{
+		base.OnHitTargets(_hitIndex, hitList);
+	}
 
-	// protected override void OnHitTargets(int _healIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> healList)
-	// {
-	// 	base.OnHitTargets(_healIndex, healList);
-    // }
+	protected override void OnAllAttackMoveFinished()
+	{
+		base.OnAllAttackMoveFinished();
+
+		OnSkillFinished();
+	}
 
 }
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index f51ffe4..cd4c91d 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -376,7 +376,7 @@
 		HashSet<BattleObject> highlightList = new HashSet<BattleObject>(battleField.battleObjMgr.GetBattleObjList(tagUseSkillAttack));
 		highlightList.Add(caster);
 
-
+		// caster.battleField.skillMask
 		//	鎶婅繖浜汢O鍏ㄩ珮浜� 鎴栬�呰鎶婇櫎浜嗚繖浜涚殑閮芥斁鍦ㄩ伄缃╁悗闈�
 		//	YYL TODO
 	}
diff --git a/Main/System/Battle/Skill/SkillFactory.cs b/Main/System/Battle/Skill/SkillFactory.cs
index 3654df9..c8af9c6 100644
--- a/Main/System/Battle/Skill/SkillFactory.cs
+++ b/Main/System/Battle/Skill/SkillFactory.cs
@@ -60,9 +60,9 @@
 				//	鍏堝疄鐜颁竴涓敾鍑荤殑 鍚庣画鏈夊啀鎱㈡參澧炲姞
 				skill = new DirectlyDamageSkill(_caster, skillConfig, vNetData, packList, battleField);
 				break;
-			// case 2:
-			// 	// skill = new DirectlyHealSkill(_skillConfig);
-			// 	break;
+			case 2:
+				skill = new DirectlyHealSkill(_caster, skillConfig, vNetData, packList, battleField);
+				break;
 			// case 3:
 			// case 4:
 			// case 5:
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
index 6f74a30..2e3cb94 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BezierBulletCurve.cs
@@ -9,8 +9,8 @@
     private Vector2 control;
 
     public BezierBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer effectPlayer,
-        RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
-        : base(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, onHit) { }
+        RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, int bulletIndex, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+        : base(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, bulletIndex, onHit) { }
 
     public override void Reset()
     {
@@ -36,7 +36,7 @@
         if (t >= 1f)
         {
             finished = true;
-            onHit?.Invoke(0, hurts);
+            onHit?.Invoke(mBulletIndex, hurts);
         }
     }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
index 9c1568e..f935e49 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BounceBulletCurve.cs
@@ -15,8 +15,8 @@
     private float bounceElapsed = 0f;
 
     public BounceBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer effectPlayer,
-        RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
-        : base(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, onHit)
+        RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, int bulletIndex, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+        : base(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, bulletIndex, onHit)
     {
         this.hurtList = new List<HB427_tagSCUseSkill.tagSCUseSkillHurt>(tagUseSkillAttack.HurtList);
     }
@@ -51,7 +51,7 @@
         if (t >= 1f)
         {
             // 鍛戒腑褰撳墠鐩爣
-            onHit?.Invoke(curIndex, hurtList);
+            onHit?.Invoke(mBulletIndex, hurtList);
 
             curIndex++;
             if (curIndex >= hurtList.Count)
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
index 8e92c98..cf68b6b 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -16,9 +16,12 @@
     protected float duration = 0f;
     protected float elapsed = 0f;
 
+    protected int mBulletIndex;
+
     protected List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hurts = new List<HB427_tagSCUseSkill.tagSCUseSkillHurt>();
 
-    public BulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer bulletEffect, RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+    public BulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer bulletEffect, RectTransform target,
+        HB427_tagSCUseSkill tagUseSkillAttack, int bulletIndex, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
     {
         this.caster = caster;
         this.skillConfig = skillConfig;
@@ -27,6 +30,7 @@
         this.onHit = onHit;
         this.bulletTrans = bulletEffect.transform as RectTransform;
         this.hurts = tagUseSkillAttack.HurtList.ToList();
+        this.mBulletIndex = bulletIndex;
 
         // 璁剧疆bulletTrans鍧愭爣涓篶aster.heroRectTrans鐨勪笘鐣屽潗鏍囪浆鎹㈠埌bulletTrans鐖惰妭鐐逛笅鐨勬湰鍦板潗鏍�
         if (bulletTrans != null && caster.heroRectTrans != null)
@@ -69,7 +73,7 @@
     protected virtual void ReachTarget()
     {
         finished = true;
-        onHit?.Invoke(0, hurts);
+        onHit?.Invoke(mBulletIndex, hurts);
         caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, bulletEffect);
     }
 
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
index 7d1e460..7da9f26 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurveFactory.cs
@@ -16,25 +16,26 @@
         BattleEffectPlayer bulletEffect,
         RectTransform target,
         HB427_tagSCUseSkill tagUseSkillAttack,
+        int bulletIndex,
         Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
     {
         BulletCurve curve = null;
         switch (skillConfig.BulletPath)
         {
             case 1: // 鐩寸嚎娑堝け浜庣洰鏍�
-                curve = new StraightBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, onHit);
+                curve = new StraightBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, bulletIndex, onHit);
                 break;
             case 2: // 鐩寸嚎璐┛娑堝け鍦ㄥ睆骞曞
-                curve = new PenetrateBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, onHit);
+                curve = new PenetrateBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, bulletIndex, onHit);
                 break;
             case 3: // 鎶涚墿绾垮姬绾�
-                curve = new BezierBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, onHit);
+                curve = new BezierBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, bulletIndex, onHit);
                 break;
             case 4: // 寮瑰皠
-                curve = new BounceBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, onHit);
+                curve = new BounceBulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, bulletIndex, onHit);
                 break;
             default:
-                curve = new BulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, onHit);
+                curve = new BulletCurve(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, bulletIndex, onHit);
                 break;
         }
 
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
index 9cf08cd..35ace1a 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/PenetrateBulletCurve.cs
@@ -9,8 +9,8 @@
     private Vector2 outPos;     // 灞忓箷澶栧欢闀跨偣锛堟湰鍦板潗鏍囷級
     private bool hitTriggered = false; // 鏄惁宸茶Е鍙憃nHit
 
-    public PenetrateBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer effectPlayer, RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
-        : base(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, onHit) { }
+    public PenetrateBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer effectPlayer, RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, int bulletIndex, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+        : base(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, bulletIndex, onHit) { }
 
     /// <summary>
     /// 鍒濆鍖栧脊閬撳弬鏁�
@@ -52,7 +52,7 @@
             if (!hitTriggered)
             {
                 hitTriggered = true;
-                onHit?.Invoke(0, hurts);
+                onHit?.Invoke(mBulletIndex, hurts);
             }
         }
         bulletTrans.anchoredPosition = pos;
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
index 5079d3b..d0933fb 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/StraightBulletCurve.cs
@@ -7,9 +7,9 @@
     private Vector2 start;
     private Vector2 end;
 
-    public StraightBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer bulletEffect, RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
-        : base(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, onHit)
-    { 
+    public StraightBulletCurve(BattleObject caster, SkillConfig skillConfig, BattleEffectPlayer bulletEffect, RectTransform target, HB427_tagSCUseSkill tagUseSkillAttack, int bulletIndex, Action<int, List<HB427_tagSCUseSkill.tagSCUseSkillHurt>> onHit)
+        : base(caster, skillConfig, bulletEffect, target, tagUseSkillAttack, bulletIndex, onHit)
+    {
 
     }
 
@@ -50,7 +50,7 @@
         if (t >= 1f)
         {
             finished = true;
-            onHit?.Invoke(0, hurts);
+            onHit?.Invoke(mBulletIndex, hurts);
         }
     }
 }
\ No newline at end of file
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index 3ab4d1b..22d88ed 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -13,6 +13,7 @@
 
     protected List<BulletCurve> bulletCurves = new List<BulletCurve>();
 
+
     public BulletSkillEffect(SkillConfig _skillConfig, BattleObject _caster, HB427_tagSCUseSkill _tagUseSkillAttack)
         : base(_skillConfig, _caster, _tagUseSkillAttack)
     {
@@ -33,7 +34,7 @@
                 Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
                 return;
             }
-            ShotToTarget(targetObject);
+            ShotToTarget(targetObject, index);
         }
         //  鏅�氱殑鍋氭硶 鍖哄垎鎵撳悜闃佃惀鎴栬�呮墦鍚戜釜浣�
         else
@@ -42,29 +43,29 @@
             if (skillConfig.Scattering == 1)
             {
                 //  鏁e皠
-                ShotEachTargets();
+                ShotEachTargets(index);
             }
             else
             {
                 switch (skillConfig.TagAim)
                 {
                     case 0:
-                        AllAreaShoting();
+                        AllAreaShoting(index);
                         break;
                     case 1:
-                        OneTargetShoting();
+                        OneTargetShoting(index);
                         break;
                     case 2:
-                        FrontRowShoting();
+                        FrontRowShoting(index);
                         break;
                     case 3:
-                        BackRowShoting();
+                        BackRowShoting(index);
                         break;
                     case 4:
-                        VerticalRowShoting();
+                        VerticalRowShoting(index);
                         break;
                     case 5:
-                        SelfShoting();
+                        SelfShoting(index);
                         break;
                     default:
                         Debug.LogError("瀛愬脊鐗规晥娌℃湁閰嶇疆姝g‘鐨凾agAim锛屽己鍒剁粨鏉熷瓙寮圭壒鏁� TagAim: " + skillConfig.TagAim);
@@ -76,23 +77,23 @@
     }
 
     // 0   鍏ㄩ儴鑼冨洿锛�
-    private void AllAreaShoting()
+    private void AllAreaShoting(int index)
     {
         if (skillConfig.TagCount == 0 || skillConfig.TagCount >= 6)
         {
             // 鑻agCount鐩爣涓暟涓�0鎴�6锛屾牴鎹甌agFriendly鏁屾垜閰嶇疆锛屼唬琛ㄤ綔鐢ㄤ簬鏁屾柟鍏ㄤ綋鎴栨垜鏂瑰叏浣擄紝姝ゆ椂涓荤洰鏍囦负鏁屾垜绔欎綅涓殑2鍙蜂綅缃�
             BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp();
-            ShotToIndex(battleCamp, 1);
+            ShotToIndex(battleCamp, 1, index);
         }
         else
         {
             // 鑻agCount鐩爣涓暟涓�1~5涓紝浠h〃闅忔満浣滅敤浜庢晫鏂规垨鎴戞柟x涓灏嗭紝姝ゆ椂鎵�鏈夎闅忔満鍒扮殑瀵硅薄閮戒负涓荤洰鏍囷紙鏂芥硶浣嶇疆浼氱敤瀹㈡埛绔厤缃級
-            ShotEachTargets();
+            ShotEachTargets(index);
         }   
     }
 
     // 1    瀵逛綅锛�
-    private void OneTargetShoting()
+    private void OneTargetShoting(int index)
     {
         // 榛樿鍙��1涓紝瀵逛綅瑙勫垯涓篈1浼樺厛鎵揃1锛孉2浼樺厛鎵揃2锛孉3浼樺厛鎵揃3锛屽浣嶇洰鏍囨浜℃椂锛屼紭鍏堝墠鎺掞紝
         // 姣斿B2宸茬粡姝讳骸锛岄偅涔圓2灏嗕紭鍏堟墦B1锛屽墠鎺�1銆�2銆�3鍙蜂綅缃叏閮ㄦ浜′箣鍚庢墠寮�濮嬮�夋嫨鍚庢帓4銆�5銆�6鍙蜂綅缃紝
@@ -110,11 +111,11 @@
             Debug.LogError("鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
             return;
         }
-        ShotToTarget(targetObject);
+        ShotToTarget(targetObject, index);
     }
 
     // 2    鍓嶆帓锛�
-    private void FrontRowShoting()
+    private void FrontRowShoting(int index)
     {
         // 1銆�2銆�3鍙蜂綅涓哄墠鎺掞紝榛樿2鍙蜂綅缃负涓荤洰鏍囷紝褰�1銆�2銆�3鍙蜂綅缃鑹插叏閮ㄦ浜★紝鍓嶆帓灏嗘浛鎹㈡垚鍚庢帓锛�5鍙蜂綅缃彉鏇翠负涓荤洰鏍囷紝
         // 鑻ラ厤缃甌agAffect缁嗗垎鐩爣锛屼笖浜烘暟灏忎簬3锛屽垯鎵�鏈夎閫夋嫨鐩爣鍧囦负涓荤洰鏍囷紙鏂芥硶浣嶇疆浼氱敤瀹㈡埛绔厤缃級
@@ -124,7 +125,7 @@
 
         if (skillConfig.TagAffect != 0 && skillConfig.TagAffect != 3 && skillConfig.TagCount < 3)
         {
-            ShotEachTargets();
+            ShotEachTargets(index);
         }
         else
         {
@@ -158,19 +159,19 @@
                 targetIndex = 1;
             }
 
-            ShotToIndex(battleCamp, targetIndex);
+            ShotToIndex(battleCamp, targetIndex, index);
         }
 
     }
 
-    private void ShotToIndex(BattleCamp camp, int targetIndex)
+    private void ShotToIndex(BattleCamp camp, int targetIndex, int bulletIndex)
     {
         RectTransform targetTransform = caster.battleField.GetTeamNode(camp, targetIndex);
         BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
 
         RectTransform effectTrans = effectPlayer.transform as RectTransform;
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack, (index, hitList) =>
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, targetTransform, tagUseSkillAttack, bulletIndex, (index, hitList) =>
         {
             if (isFinish)
                 return;
@@ -205,7 +206,7 @@
     }
 
     // 3    鍚庢帓锛�
-    private void BackRowShoting()
+    private void BackRowShoting(int index)
     {
         // 4銆�5銆�6鍙蜂綅涓哄悗鎺掞紝榛樿5鍙蜂綅缃负涓荤洰鏍囷紝褰�4銆�5銆�6鍙蜂綅缃鑹插叏閮ㄦ浜★紝鍚庢帓鎺掑皢鏇挎崲鎴愬墠鎺掞紝2鍙蜂綅缃彉鏇翠负涓荤洰鏍囷紝
         // 鑻ラ厤缃甌agAffect缁嗗垎鐩爣锛屼笖浜烘暟灏忎簬3锛屽垯鎵�鏈夎閫夋嫨鐩爣鍧囦负涓荤洰鏍囷紙鏂芥硶浣嶇疆浼氱敤瀹㈡埛绔厤缃級
@@ -215,7 +216,7 @@
 
         if (skillConfig.TagAffect != 0 && skillConfig.TagAffect != 3 && skillConfig.TagCount < 3)
         {
-            ShotEachTargets();
+            ShotEachTargets(index);
         }
         else
         {
@@ -249,12 +250,12 @@
                 targetIndex = 4;
             }
 
-            ShotToIndex(battleCamp, targetIndex);
+            ShotToIndex(battleCamp, targetIndex, index);
         }
     }
 
     // 4    绾垫帓锛�
-    private void VerticalRowShoting()
+    private void VerticalRowShoting(int index)
     {
         // 绾垫帓鍒嗗埆涓�1銆�4锛�2銆�5锛�3銆�6锛屼笁缁勭旱鎺掞紝鎸夊浣嶈鍒欓�夋嫨锛岄粯璁�1鍙枫��2鍙锋垨3鍙蜂负涓荤洰鏍囷紝鍓嶆帓1銆�2銆�3鍙蜂綅缃叏閮ㄦ瀹屽悗锛�4鍙枫��5鍙锋垨6鍙蜂负涓荤洰鏍�
         BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp();
@@ -274,7 +275,7 @@
 
         if (minimumIndex != int.MaxValue)
         {
-            ShotToIndex(battleCamp, minimumIndex);
+            ShotToIndex(battleCamp, minimumIndex, index);
         }
         else
         {
@@ -286,17 +287,17 @@
     }
 
     // 5    鑷繁锛�
-    private void SelfShoting()
+    private void SelfShoting(int index)
     {
         // 榛樿鍙�夎嚜宸憋紝鑷繁涓轰富鐩爣
-        ShotToIndex(caster.Camp, caster.teamHero.positionNum);
+        ShotToIndex(caster.Camp, caster.teamHero.positionNum, index);
     }
 
-    protected void ShotToTarget(BattleObject target)
+    protected void ShotToTarget(BattleObject target, int bulletIndex)
     {
         BattleEffectPlayer effectPlayer = caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.BulletEffectId, caster.heroRectTrans, caster.Camp);
 
-        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, (index, hitList) =>
+        var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, bulletIndex, (index, hitList) =>
         {
             if (isFinish)
                 return;
@@ -320,9 +321,11 @@
             onHit?.Invoke(index, hitList);
             // 鍑讳腑灏遍攢姣佸瓙寮�
             caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
-            
-            // 鎾斁瀛愬脊鐖嗙偢鐗规晥
-            isFinish = true;
+
+            if (bulletIndex >= skillConfig.ActiveFrames.Length - 1)
+            {
+                isFinish = true;
+            }
         });
 
         bulletCurves.Add(bulletCurve);
@@ -344,7 +347,7 @@
         }
     }
 
-    private void ShotEachTargets()
+    private void ShotEachTargets(int index)
     {
         for (int i = 0; i < tagUseSkillAttack.HurtList.Length; i++)
         {
@@ -355,7 +358,7 @@
                 Debug.LogError("鐗规晥鐩爣涓虹┖ target == null ObjId : " + hurt.ObjID);
                 continue;
             }
-            ShotToTarget(target);
+            ShotToTarget(target, index);
         }
     }
 
diff --git a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
index fe46ec2..eebee91 100644
--- a/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
+++ b/Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -135,7 +135,7 @@
             sliderHp.value = ((float)toHp) / ((float)maxHp);
         }
 
-        BattleDebug.LogError("update hp from " + fromHp + " to " + toHp + " maxHp " + maxHp);
+        // BattleDebug.LogError("update hp from " + fromHp + " to " + toHp + " maxHp " + maxHp);
     }
 
     public void UpdateXP(long fromXp, long toXp, long maxXp, bool tween = true)
@@ -157,7 +157,7 @@
             sliderXp.value = ((float)toXp) / ((float)maxXp);
         }
 
-        BattleDebug.LogError("update xp from " + fromXp + " to " + toXp + " maxXp " + maxXp);
+        // BattleDebug.LogError("update xp from " + fromXp + " to " + toXp + " maxXp " + maxXp);
     }
 
     public void Run()

--
Gitblit v1.8.0