yyl
3 天以前 52d7643d8a5f133232a9d25c09399f283321f6aa
125 战斗 战斗表现层级调整
6个文件已修改
184 ■■■■ 已修改文件
Main/Component/UI/Effect/BattleEffectPlayer.cs 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleConst.cs 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleField/BattleRootNode.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Buff/BattleObjectBuffMgr.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Battle/Skill/SkillBase.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Component/UI/Effect/BattleEffectPlayer.cs
@@ -228,9 +228,14 @@
            bool isHeroFront = funcIsHeroFront();
            int finalSortingOrder = isHeroFront ?
                (isEffectFront ? BattleConst.ActiveHeroActionSortingOrder + 1 : BattleConst.ActiveHeroBackSortingOrder) : (isEffectFront ? BattleConst.UnactiveHeroFrontSortingOrder : BattleConst.UnactiveHeroBackSortingOrder);
            int baseSortingOrder = isHeroFront ? BattleConst.SkillMaskOrder : BattleConst.BattleBackgroundOrder - BattleConst.BattleFrontHeroEffect - 1;
            //  区分是否在特效前面 还要再区分是否在UI前面 isBindBone
            int dynamicOffset = isBindBone
                                ? BattleConst.BattleFrontHeroBehindUIEffect : (isEffectFront ? BattleConst.BattleFrontHeroEffect : BattleConst.BattleBehindHeroEffect);
            int finalSortingOrder = baseSortingOrder + dynamicOffset;
            blocker.SetSortingOrder(finalSortingOrder);
        }
@@ -677,8 +682,15 @@
        }
    }
    public void BindBone(SkeletonAnimation skeletonAnim, string v)
    public void BindBone(BattleObject battleObject, string v)
    {
        if (battleObject == null || battleObject.motionBase == null || battleObject.motionBase.skeletonAnim == null)
        {
            return;
        }
        var skeletonAnim = battleObject.motionBase.skeletonAnim;
        Bone bone = skeletonAnim.skeleton.FindBone(v);
        isBindBone = false;
        followedBone = null;
@@ -692,6 +704,8 @@
        isBindBone = true;
        followedBone = bone;
        ApplySortingOrder();
        BoneFollower boneFollower = gameObject.AddMissingComponent<BoneFollower>();
        boneFollower.boneName = v;
        boneFollower.skeletonRenderer = skeletonAnim;
Main/System/Battle/BattleConst.cs
@@ -101,6 +101,33 @@
    //  释放技能英雄>受影响英雄>正常UI>黑色蒙版>未受影响英雄>底图
    // ----------------------2025 12/30更新 start
    // BattleBackground = -10
    // BattleWinLayer    0
    //                                         {
    //                                             BehindHeroUI     =   1  Offset  -2
    //                                             BehindHeroEffect =   2          -1
    // UnactiveHero =  BattleBackground  +         BattleHero       =   3           0
    //                                             FrontUIEffect    =   4           1
    //                                             BattleHeroUI     =   5           2
    //                                             FrontHeroEffect  =   6           3
    //                                         }
    // SkillMask    =    10
    //                                         {
    //                                             BehindHeroUI     =   1  Offset  -2
    //                                             BehindHeroEffect =   2          -1
    // ActiveHero   =  SkillMask         +         BattleHero       =   3           0
    //                                             FrontUIEffect    =   4           1
    //                                             BattleHeroUI     =   5           2
    //                                             FrontHeroEffect  =   6           3
    //                                         }
    // BattleStartEffect = 30
    // ----------------------2025 12/30更新 end
    //释放技能英雄>受影响英雄>[正常UI]>黑色蒙版>未受影响英雄>底图
    public static int BattleWinSortingOrder
@@ -136,89 +163,38 @@
        }
    }
    public static int BattleBehindCharUIOffset = 1;    //角色后面的UI 主要是阴影(处理)
    public static int BattleBehindHeroEffect = 2;       //角色身后的特效(处理)
    public static int BattleHeroOffset = 3;             //角色本身的层级(不需处理)
    public static int BattleActiveHeroOffset = 4;
    public static int BattleFrontHeroBehindUIEffect = 5;          //角色身前的 但是UI后面特效
    public static int BattleFrontCharUIOffset = 6;      //角色身前的UI
    public static int BattleFrontHeroEffect = 7;        //角色身前的特效
    public static int SkillMaskOrder
    {
        get
        {
            return BattleWinSortingOrder + 10;
        }
    }
    //  释放技能英雄>受影响英雄>正常UI>黑色蒙版>未受影响英雄>[底图]
    public static int BattleBackgroundOrder
    {
        get
        {
            return BattleWinSortingOrder - 10;
        }
    }
    // 非激活英雄的后特效
    public static int UnactiveHeroBackSortingOrder
    {
        get
        {
            return BattleBackgroundOrder + 1;
        }
    }
    //释放技能英雄>受影响英雄>正常UI>黑色蒙版>[未受影响英雄]>底图
    // 非激活英雄的层级
    public static int UnactiveHeroSortingOrder
    {
        get
        {
            return UnactiveHeroBackSortingOrder + 1;
        }
    }
    // 非激活英雄的前特效
    public static int UnactiveHeroFrontSortingOrder
    {
        get
        {
            return UnactiveHeroSortingOrder + 1;
        }
    }
    //释放技能英雄>受影响英雄>正常UI>[黑色蒙版]>未受影响英雄>底图
    // 黑色蒙版的层级
    public static int BlockerSortingOrder
    {
        get
        {
            return UnactiveHeroFrontSortingOrder + 1;
        }
    }
    // 激活英雄的后特效
    public static int ActiveHeroBackSortingOrder
    {
        get
        {
            return BlockerSortingOrder + 1;
        }
    }
    //释放技能英雄>[受影响英雄]>正常UI>黑色蒙版>未受影响英雄>底图
    // 激活英雄的层级
    public static int ActiveHeroSortingOrder
    {
        get
        {
            return ActiveHeroBackSortingOrder + 1;
        }
    }
    //[释放技能英雄]>受影响英雄>正常UI>黑色蒙版>未受影响英雄>底图
    //  释放技能钟的英雄层级
    public static int ActiveHeroActionSortingOrder
    {
        get
        {
            return ActiveHeroSortingOrder + 1;
        }
    }
    // 激活英雄的前特效
    public static int ActiveHeroFrontSortingOrder
    {
        get
        {
            return ActiveHeroActionSortingOrder + 1;
        }
    }
    
Main/System/Battle/BattleField/BattleRootNode.cs
@@ -68,8 +68,8 @@
    public void SetSortingOrder()
    {
        skillMaskAdjuster.SetSortingOrder(BattleConst.BlockerSortingOrder);
        battleStartAdjuster.SetSortingOrder(BattleConst.BattleWinSortingOrder + 1);//最高层
        skillMaskAdjuster.SetSortingOrder(BattleConst.SkillMaskOrder);
        battleStartAdjuster.SetSortingOrder(BattleConst.SkillMaskOrder + BattleConst.BattleFrontHeroEffect + 1);//最高层
        backgroundAdjuster.SetSortingOrder(BattleConst.BattleBackgroundOrder);//最低层
    }
Main/System/Battle/BattleObject/BattleObjectLayerMgr.cs
@@ -5,7 +5,10 @@
{
    public BattleObject battleObj;
    public RendererAdjuster rendererAdjuster;
    //  角色阴影 头顶的血条国籍等
    public RendererAdjuster frontCharRendererAdjuster;
    public RendererAdjuster behindCharRendererAdjuster;
    private List<BattleEffectPlayer> effectPlayers = new List<BattleEffectPlayer>();
@@ -19,14 +22,24 @@
    public void Init(BattleObject battleObj)
    {
        this.battleObj = battleObj;
        rendererAdjuster = battleObj.heroGo.AddMissingComponent<RendererAdjuster>();
        frontCharRendererAdjuster = battleObj.heroGo.AddMissingComponent<RendererAdjuster>();
        behindCharRendererAdjuster = battleObj.heroRectTrans.Find("Hero/Follower/BattleHeroInfoBar/BehindHero").gameObject.AddMissingComponent<RendererAdjuster>();
        frontCharRendererAdjuster.canvasOffset = BattleConst.BattleFrontCharUIOffset;
        behindCharRendererAdjuster.canvasOffset = BattleConst.BattleBehindCharUIOffset;
    }
    public void SetSortingOrder(int sortingOrder)
    {
        if (rendererAdjuster != null)
        if (frontCharRendererAdjuster != null)
        {
            rendererAdjuster.SetSortingOrder(sortingOrder);
            frontCharRendererAdjuster.SetSortingOrder(sortingOrder);
        }
        if (behindCharRendererAdjuster != null)
        {
            behindCharRendererAdjuster.SetSortingOrder(sortingOrder);
        }
        for (int i = 0; i < effectPlayers.Count; i++)
@@ -71,8 +84,9 @@
            effectPlayers[i].SetActive(isFront);
        }
        //  策划要在释放技能的时候 其他角色隐藏 这里在back的时候就直接设置成0  在最底下 看不到的地方
        int order = isFront ? BattleConst.ActiveHeroSortingOrder : 0; //BattleConst.UnactiveHeroSortingOrder;
        SetSortingOrder(order);
        int baseOrder = isFront ? BattleConst.SkillMaskOrder : BattleConst.BattleBackgroundOrder;
        SetSortingOrder(baseOrder);
    }
    public bool IsFront()
Main/System/Battle/Buff/BattleObjectBuffMgr.cs
@@ -284,7 +284,7 @@
                BattleEffectPlayer effect = battleObject.battleField.battleEffectMgr
                    .PlayEffect(battleObject, skillConfig.BuffEffect, battleObject.heroRectTrans, battleObject.Camp, battleObject.teamHero.modelScale);
                effect.BindBone(battleObject.motionBase.skeletonAnim, effect.effectConfig.nodeName);
                effect.BindBone(battleObject, effect.effectConfig.nodeName);
                var buffIdSet = new HashSet<uint> { buffRefresh.BuffID };
                buffEffectDict.Add(
Main/System/Battle/Skill/SkillBase.cs
@@ -536,7 +536,7 @@
    // 高亮所有相关目标:设置施法者和目标的显示层级
    protected void HighLightAllTargets()
    {
        caster.layerMgr.SetSortingOrder(BattleConst.ActiveHeroActionSortingOrder);
        caster.layerMgr.SetSortingOrder(BattleConst.SkillMaskOrder + BattleConst.BattleActiveHeroOffset);
        if (skillConfig.FuncType != 2)
            return;