| | |
| | | if (isFinished) |
| | | return; |
| | | |
| | | // 1. 强制结束技能效果 |
| | | skillEffect?.ForceFinished(); |
| | | skillEffect = null; |
| | | |
| | | // 2. 强制结束所有子技能动作 |
| | | otherSkillActionList.ForEach(action => action.ForceFinish()); |
| | | otherSkillActionList.Clear(); |
| | | |
| | | // 3. 清理 DOTween 动画(防止移动回调在战斗结束后执行) |
| | | if (caster != null && caster.heroRectTrans != null) |
| | | { |
| | | DG.Tweening.DOTween.Kill(caster.heroRectTrans); |
| | | } |
| | | |
| | | // 4. 重置施法者状态 |
| | | if (caster != null) |
| | | { |
| | | // 重置位置到原点 |
| | | if (caster.heroRectTrans != null) |
| | | { |
| | | caster.heroRectTrans.anchoredPosition = Vector2.zero; |
| | | } |
| | | |
| | | // 重置朝向 |
| | | if (caster.heroGo != null) |
| | | { |
| | | Vector3 scale = caster.heroGo.transform.localScale; |
| | | scale.x = Mathf.Abs(scale.x); |
| | | caster.heroGo.transform.localScale = scale; |
| | | } |
| | | |
| | | // 取消幻影效果 |
| | | caster.motionBase?.ShowIllusionShadow(false); |
| | | |
| | | // 播放待机动画(如果还活着) |
| | | if (!caster.teamHero.isDead) |
| | | { |
| | | caster.motionBase?.ResetForReborn(false); |
| | | } |
| | | |
| | | // 清理动画回调 |
| | | caster.motionBase?.CancelControledAnimation(); |
| | | } |
| | | |
| | | // 5. 恢复 UI 状态 |
| | | if (battleField != null) |
| | | { |
| | | // 恢复所有角色的显示层级和血条 |
| | | var allList = battleField.battleObjMgr?.allBattleObjDict?.Values; |
| | | if (allList != null) |
| | | { |
| | | foreach (BattleObject bo in allList) |
| | | { |
| | | bo.layerMgr?.SetFront(); |
| | | bo.heroInfoBar?.SetActive(true); |
| | | } |
| | | } |
| | | |
| | | // 关闭技能遮罩 |
| | | if (battleField.battleRootNode != null && battleField.battleRootNode.skillMaskNode != null) |
| | | { |
| | | battleField.battleRootNode.skillMaskNode.SetActive(false); |
| | | } |
| | | } |
| | | |
| | | isFinished = true; |
| | | moveFinished = true; |
| | | isPlay = true; |
| | | |
| | | // 处理所有剩余包 |
| | | // 6. 处理所有剩余包(包括 buff 包) |
| | | // 先处理 buffCollections |
| | | foreach (var buff in buffCollections) |
| | | { |
| | | PackageRegedit.Distribute(buff); |
| | | } |
| | | buffCollections.Clear(); |
| | | |
| | | // 处理剩余的 packList |
| | | while (packList.Count > 0) |
| | | { |
| | | var pack = packList[0]; |