hch
21 小时以前 ee7f8b5362d27b228274c197dba97b17cb6bda57
Merge branch 'master' of http://mobile.secondworld.net.cn:10010/r/Project_SG_scripts
5个文件已修改
115 ■■■■■ 已修改文件
Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleObject/BattleObject.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Skill/SkillBase.cs 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
@@ -62,10 +62,24 @@
    public override void ForceFinish()
    {
        //正常开始之后到界面出现之前都点不了 所以这边不用强制完成 接口留着
        if (!isRun)
        {
            isRun = true;
            UniTaskExtension.DelayTime((GameObject)null, 1f, () =>
            {
                if (battleField ==null|| battleField.battleRootNode == null|| battleField.battleRootNode.battleStartNode == null)
                {
                    return;
                }
                battleField.battleRootNode.battleStartNode.SetActive(false);
                StartBattleCallback();
            });
        }
        base.ForceFinish();
        // 完成就开始显示UI
        if (isFinish)
            return;
        // 这里无法强制执行 必须等待isFinish = true
    }
}
Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -124,22 +124,30 @@
    public override void ForceFinish()
    {
        if (isFinish)
            return;
        isFinish = true;
        // 强制结束所有死亡触发技能
        foreach (var kv in deathActionDict)
        {
            kv.Value.ForceFinish();
        }
        deathActionDict.Clear();
        //  直接结束
        // 清理状态字典,防止回调继续等待
        deadActionStatesDict.Clear();
        //  直接结束所有死亡对象
        foreach (var deadPack in deadPackList)
        {
            BattleObject deadObj = battleField.battleObjMgr.GetBattleObject((int)deadPack.deadPack.ObjID);
            if (null != deadObj)
            {
                PerformDrop(deadObj);
                deadObj.SetDeath();
            }
            deadObj.SetDeath();
        }
        base.ForceFinish();
Main/System/Battle/BattleField/RecordActions/DodgeFinishAction.cs
@@ -31,10 +31,16 @@
    public override void ForceFinish()
    {
        //正常开始之后到界面出现之前都点不了 所以这边不用强制完成 接口留着
        if (isFinish)
            return;
        // 确保闪避状态正确结束
        if (battleObject != null && !isRun)
        {
            battleObject.OnDodgeEnd();
        }
        isRun = true;
        base.ForceFinish();
        // 完成就开始显示UI
    }
}
Main/System/Battle/BattleObject/BattleObject.cs
@@ -585,6 +585,7 @@
        heroGo.SetActive(true);
        motionBase.HaveRest();
        heroRectTrans.anchoredPosition = Vector2.zero;
        isReborning = false;
        heroInfoBar.SetActive(false);
        SetFront();
Main/System/Battle/Skill/SkillBase.cs
@@ -1074,16 +1074,84 @@
        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];