yyl
2025-09-05 bb145d27787e6d54cb4bf0995cf11a41d1c9e67d
Main/System/Battle/Skill/SkillBase.cs
@@ -106,7 +106,7 @@
      switch (skillConfig.castMode)
      {
         case SkillCastMode.Self:
            CastImpl();
            CastImpl(OnAttackFinish);
            break;
         case SkillCastMode.Enemy:
            CastToEnemy();
@@ -175,12 +175,8 @@
                  () =>
                  {
                     //   回到原来的位置
                     MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () =>
                     {
                        TurnBack(null, 1f);
                        caster.motionBase.PlayAnimation(MotionName.idle, true);
                        OnAllAttackMoveFinished();
                     });
                     MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime,
                        OnAttackFinish);
                  }
               , -1f);
            });
@@ -200,17 +196,13 @@
         return;
      }
      var mainHurt = tagUseSkillAttack.HurtList[0];
      int mainTargetPosNum = BattleUtility.GetMainTargetPositionNum(caster, tagUseSkillAttack.HurtList.ToList(), skillConfig);
      BattleObject mainTarget = battleField.battleObjMgr.GetBattleObject((int)mainHurt.ObjID);
      if (mainTarget == null)
      {
         Debug.LogError("目标为空 mainTarget == null ObjID : " + mainHurt.ObjID);
         OnSkillFinished();
         return;
      }
      BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp();
      MoveToTarget(mainTarget.heroRectTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () =>
      RectTransform targetTrans = battleField.GetTeamNode(battleCamp, mainTargetPosNum);
      MoveToTarget(targetTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () =>
      {
         //   到位置转身(不一定非要转身 但是流程要写)
         TurnBack(() =>
@@ -222,12 +214,8 @@
                  () =>
                  {
                     //   回到原来的位置
                     MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () =>
                     {
                        TurnBack(null, 1f);
                        caster.motionBase.PlayAnimation(MotionName.idle, true);
                        OnAllAttackMoveFinished();
                     });
                     MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime,
                        OnAttackFinish);
                  }
               , -1f);
            });
@@ -256,17 +244,20 @@
                  () =>
                  {
                     //   回到原来的位置
                     MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () =>
                     {
                        TurnBack(null, 1f);
                        caster.motionBase.PlayAnimation(MotionName.idle, true);
                        OnAllAttackMoveFinished();
                     });
                     MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum),
                        Vector2.zero, moveTime, OnAttackFinish);
                  }
               , -1f);
            });
         }, -1f);
      });
   }
   protected void OnAttackFinish()
   {
      TurnBack(null, 1f);
      OnAllAttackMoveFinished();
      caster.motionBase.PlayAnimation(MotionName.idle, true);
   }
@@ -294,7 +285,7 @@
            skillConfig,
            tagUseSkillAttack
         );
      if (skillEffect != null)
      // if (skillEffect != null)
      {
         skillEffect.Play(OnHitTargets);
      }
@@ -315,7 +306,7 @@
   /// <param name="times"></param>
   public virtual void OnMiddleFrameStart(int times)
   {
      if (skillEffect != null)
      // if (skillEffect != null)
      {
         skillEffect.OnMiddleFrameStart(times);
      }
@@ -323,7 +314,7 @@
   public virtual void OnMiddleFrameEnd(int times, int hitIndex)
   {
      if (skillEffect != null)
      // if (skillEffect != null)
      {
         skillEffect.OnMiddleFrameEnd(times, hitIndex);
      }
@@ -334,7 +325,10 @@
   /// </summary>
   public virtual void OnFinalFrameStart()
   {
      // if (skillEffect != null)
      {
         skillEffect.OnFinalFrameStart();
      }
   }
   /// <summary>
@@ -342,7 +336,12 @@
   /// </summary>
   public virtual void OnFinalFrameEnd()
   {
      // if (skillEffect != null)
      {
         skillEffect.OnFinalFrameEnd();
      }
      HandleDead();
   }
@@ -375,7 +374,7 @@
         OnHitEachTarget(_hitIndex, target, hurt);
      }
      HandleDead();
   }
@@ -587,7 +586,29 @@
   public virtual void ForceFinished()
   {
      skillEffect?.ForceFinished();
      isFinished = true;
      while (packList.Count > 0)
      {
         var pack = packList[0];
         packList.RemoveAt(0);
         if (pack is CustomHB426CombinePack)
         {
            var combinePack = pack as CustomHB426CombinePack;
            if (combinePack.startTag.Tag.StartsWith("Skill_"))
            {
               BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag);
               otherSkillAction = combinePack.CreateSkillAction();
               //   强制结束其他技能
               otherSkillAction.ForceFinish();
               return;
            }
         }
         PackageRegedit.Distribute(pack);
      }
   }
   public void OnSkillFinished()