yyl
2025-09-01 ee032c35c49d47daba2dee1580b3abbe59d59bd8
125 【战斗】战斗系统 战斗npc消失的问题处理
8个文件已修改
123 ■■■■ 已修改文件
Main/System/Battle/BattleHUDWin.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleObject/BattleObjMgr.cs 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleObject/BattleObject.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Skill/DirectlyHealSkill.cs 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Skill/RebornSkill.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Skill/SkillBase.cs 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/UIComp/BattleHeroInfoBar.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/UIComp/BattleTips.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleHUDWin.cs
@@ -41,8 +41,6 @@
    {
        base.OnPreOpen();
        EventBroadcast.Instance.AddListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
        EventBroadcast.Instance.AddListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_MOUNTED, OnBuffMounted);
        EventBroadcast.Instance.AddListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_DISAPEAR, OnBuffDisapear);
        damagePrefabPool = GameObjectPoolManager.Instance.RequestPool(UILoader.LoadPrefab("DamageContent"));
        // buffIconPrefabPool = GameObjectPoolManager.Instance.RequestPool();
        // buffLabelPrefabPool = GameObjectPoolManager.Instance.RequestPool(ResManager.Instance.LoadAsset<GameObject>("UIComp", "BuffContent"));
@@ -52,8 +50,6 @@
    {
        base.OnPreClose();
        EventBroadcast.Instance.RemoveListener<BattleDmgInfo>(EventName.BATTLE_DAMAGE_TAKEN, OnDamageTaken);
        EventBroadcast.Instance.RemoveListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_MOUNTED, OnBuffMounted);
        EventBroadcast.Instance.RemoveListener<BattleObject, SkillConfig>(EventName.BATTLE_BUFF_DISAPEAR, OnBuffDisapear);
    }
    protected override void OnOpen()
@@ -115,16 +111,6 @@
            out anchoredPos);
        contentRect.anchoredPosition = anchoredPos;
    }
    private void OnBuffMounted(BattleObject bo, SkillConfig buffConfig)
    {
    }
    private void OnBuffDisapear(BattleObject bo, SkillConfig buffConfig)
    {
    }
    public void SetBattleField(BattleField _battleField)
Main/System/Battle/BattleObject/BattleObjMgr.cs
@@ -110,9 +110,15 @@
        {
            if (allBattleObjDict.TryGetValue((int)objID, out BattleObject battleObj))
            {
                if (battleObj.Camp == BattleCamp.Red)
                {
                    redCampDict.Remove(battleObj.teamHero.positionNum);
                }
                else
                {
                    blueCampDict.Remove(battleObj.teamHero.positionNum);
                }
                allBattleObjDict.Remove((int)objID);
                redCampDict.Remove((int)objID);
                blueCampDict.Remove((int)objID);
                BattleObjectFactory.DestroyBattleObject((int)objID, battleObj);
            }
        }
@@ -123,10 +129,11 @@
        foreach (var item in campDict)
        {
            BattleObject battleObj = item.Value;
            var objId = item.Key;
            if (battleObj != null)
            {
                allBattleObjDict.Remove(battleObj.ObjID);
                BattleObjectFactory.DestroyBattleObject(item.Key, battleObj);
                allBattleObjDict.Remove(objId);
                BattleObjectFactory.DestroyBattleObject(objId, battleObj);
            }
        }
        campDict.Clear();
Main/System/Battle/BattleObject/BattleObject.cs
@@ -246,7 +246,18 @@
        motionBase.PlayAnimation(MotionName.hit, false);
        //  扣血
        teamHero.curHp -= _totalDamage;
    }
    public void SuckHp(uint suckHP)
    {
    }
    public void HurtByReflect(uint bounceHP)
    {
    }
    //  闪避开始
@@ -367,6 +378,8 @@
#if UNITY_EDITOR_STOP_USING
    public void EditorRevive()
    {
Main/System/Battle/Skill/DirectlyHealSkill.cs
@@ -47,21 +47,4 @@
        base.OnHitTargets(_healIndex, healList);
    }
    protected override void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
    {
        base.OnHitEachTarget(target, totalDamage, damageList, ref hurt);
    }
    // //  中摇结束
    // protected override void OnActiveSkillFrame()
    // {
    // }
    // //    后摇结束
    // protected override void OnEndSkillFrame()
    // {
    // }
}
Main/System/Battle/Skill/RebornSkill.cs
@@ -39,14 +39,6 @@
        }
    }
    protected override void OnHitTargets(int _hitIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> hitList)
    {
        base.OnHitTargets(_hitIndex, hitList);
    }
    protected override void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
    {
        base.OnHitEachTarget(target, totalDamage, damageList, ref hurt);
    }
}
Main/System/Battle/Skill/SkillBase.cs
@@ -362,19 +362,40 @@
                continue;
            }
            // 伤害分布 (万分比)
            int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
            long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
            // 保证所有分配项加起来等于totalDamage,避免因整除导致的误差
            List<long> damageList = BattleUtility.DivideDamageToList(damageDivide, totalDamage);
            OnHitEachTarget(target, totalDamage, damageList, ref hurt);
            OnHitEachTarget(_hitIndex, target, hurt);
        }
        HandleDead();
    }
    protected virtual void OnHitEachTarget(int _hitIndex, BattleObject target, HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
    {
        // 伤害分布 (万分比)
        int[] damageDivide = skillConfig.DamageDivide[_hitIndex];
        long totalDamage = GeneralDefine.GetFactValue(hurt.HurtHP, hurt.HurtHPEx);
        // 保证所有分配项加起来等于totalDamage,避免因整除导致的误差
        List<long> damageList = BattleUtility.DivideDamageToList(damageDivide, totalDamage);
        // public uint ObjID;
        // public uint AttackTypes;        // 飘血类型汇总,支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;5-格挡;6-无视防御;7-暴击;9-闪避
        // public uint HurtHP;        // 飘血值,求余亿部分
        // public uint HurtHPEx;        // 飘血值,整除亿部分
        // public uint CurHP;        // 更新剩余血量,求余亿部分
        // public uint CurHPEx;        // 更新剩余血量,整除亿部分
        // public uint SuckHP;        // 本次伤害转化的吸血量
        // public uint BounceHP;        // 本次伤害反弹的伤害量
        //    TODO YYL AttackTypes  要表现成什么样呢? 支持多种类型并存,如无视防御且暴击同时被格挡,二进制或运算最终值;0-失败;1-普通;2-回血;5-格挡;6-无视防御;7-暴击;9-闪避
        target.Hurt(damageList, totalDamage, hurt.AttackTypes);
        //    TODO YYL 这里是要做统一计算后再hurt跟suckhp还是怎样
        // caster.SuckHp(hurt.SuckHP);//    吸血
        // caster.HurtByReflect(hurt.BounceHP);// 反弹伤害
    }
    protected void HandleDead()
    {
@@ -484,12 +505,6 @@
    }
    protected virtual void OnHitEachTarget(BattleObject target, long totalDamage, List<long> damageList, ref HB427_tagSCUseSkill.tagSCUseSkillHurt hurt)
    {
        target.Hurt(damageList, totalDamage, hurt.AttackTypes);
    }
    protected void CheckAfterDeadhPack()
    {
Main/System/Battle/UIComp/BattleHeroInfoBar.cs
@@ -143,6 +143,7 @@
    public void Run()
    {
        // 倒序遍历 删除.run里删除元素不受影响
        for (int i = tipsList.Count - 1; i >= 0; i--)
        {
            tipsList[i].Run();
Main/System/Battle/UIComp/BattleTips.cs
@@ -10,12 +10,7 @@
    public float showTime = 0.4f;
    public float timer = 0f;
    protected RectTransform rectTransform;
    void Awake()
    {
        rectTransform = gameObject.AddMissingComponent<RectTransform>();
    }
    public RectTransform rectTransform;
    public Text tipText;
@@ -33,6 +28,9 @@
    //  不要使用update
    public void Run()
    {
        if (!gameObject.activeSelf)
            return;
        if (timer >= showTime)
        {
            OnFinish?.Invoke();