yyl
2026-02-11 45d3d873a7740886fa09f35c9fea2830f4563072
Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -101,6 +101,7 @@
        {
            HB428_tagSCBuffRefresh buffData = null;
            bool isRemove = false;
            if (buffDataDict.TryGetValue(tempvNetData.BuffID, out buffData))
@@ -114,22 +115,38 @@
                return;
            }
            BattleObject buffCaster = battleObject.battleField.battleObjMgr.GetBattleObject((int)buffData.OwnerID);
            if (null == buffCaster)
            {
                Debug.LogError("找不到buff caster 对象 id is " + buffData.OwnerID + " buff id is " + tempvNetData.BuffID + " pack uid is " + vNetData.packUID);
            }
            bool isRemoveEffect = false;
            int remainCnt = -1;
            if (buffData != null)
            if (buffData != null && buffCaster != null)
            {
                SkillConfig skillConfig = SkillConfig.Get((int)buffData.SkillID);
                SkillSkinConfig skillSkinConfig = null;
                if (buffCaster is HeroBattleObject heroBattleObject)
                {
                    skillSkinConfig = skillConfig.GetSkillSkinConfig(heroBattleObject.teamHero.SkinID);
                }
                else
                {
                    skillSkinConfig = skillConfig.GetOriginSkinConfig();
                }
                if (null == skillConfig || skillConfig.BuffEffect <= 0)
                if (null == skillConfig || skillSkinConfig.BuffEffect <= 0)
                {
                    return;
                }
                KeyValuePair<BattleEffectPlayer, HashSet<uint>> effectPair;
                if (buffEffectDict.TryGetValue(skillConfig.BuffEffect, out effectPair))
                if (buffEffectDict.TryGetValue(skillSkinConfig.BuffEffect, out effectPair))
                {
                    effectPair.Value.Remove(buffData.BuffID);
@@ -139,8 +156,8 @@
                    {
                        //  没有这个buff了
                        isRemoveEffect = true;
                        battleObject.battleField.battleEffectMgr.RemoveEffect(skillConfig.BuffEffect, effectPair.Key);
                        buffEffectDict.Remove(skillConfig.BuffEffect);
                        battleObject.battleField.battleEffectMgr.RemoveEffect(skillSkinConfig.BuffEffect, effectPair.Key);
                        buffEffectDict.Remove(skillSkinConfig.BuffEffect);
                    }
                }
@@ -276,22 +293,41 @@
        if (battleObject.IsDead())
            return;
        if (skillConfig.BuffEffect > 0)
        BattleObject buffCaster = battleObject.battleField.battleObjMgr.GetBattleObject((int)buffRefresh.OwnerID);
        if (null == buffCaster)
        {
            if (buffEffectDict.TryGetValue(skillConfig.BuffEffect, out var pair))
            Debug.LogError("找不到buff caster 对象 id is " + buffRefresh.OwnerID + " buff id is " + buffRefresh.BuffID + " pack uid is " + buffRefresh.packUID);
        }
        SkillSkinConfig skillSkinConfig = null;
        if (buffCaster is HeroBattleObject heroBattleObject)
        {
            skillSkinConfig = skillConfig.GetSkillSkinConfig(heroBattleObject.teamHero.SkinID);
        }
        else
        {
            skillSkinConfig = skillConfig.GetOriginSkinConfig();
        }
        if (skillSkinConfig.BuffEffect > 0)
        {
            if (buffEffectDict.TryGetValue(skillSkinConfig.BuffEffect, out var pair))
            {
                pair.Value.Add(buffRefresh.BuffID);
            }
            else
            {
                BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr
                    .PlayEffect(battleObject, skillConfig.BuffEffect, battleObject.GetRectTransform(), battleObject.Camp, battleObject.GetModelScale());
                    .PlayEffect(battleObject, skillSkinConfig.BuffEffect, battleObject.GetRectTransform(), battleObject.Camp, battleObject.GetModelScale());
                effect.BindBone(battleObject, effect.effectConfig.nodeName);
                var buffIdSet = new HashSet<uint> { buffRefresh.BuffID };
                buffEffectDict.Add(
                    skillConfig.BuffEffect,
                    skillSkinConfig.BuffEffect,
                    new KeyValuePair<BattleEffectPlayer, HashSet<uint>>(effect, buffIdSet));
            }
        }