using UnityEngine; using System.Collections.Generic; public class BattleObjectLayerMgr { public BattleObject battleObj; // 角色阴影 头顶的血条国籍等 public RendererAdjuster frontCharRendererAdjuster; public RendererAdjuster behindCharRendererAdjuster; private List effectPlayers = new List(); private bool isFront = true; public BattleObjectLayerMgr() { } public void Init(BattleObject battleObj) { this.battleObj = battleObj; frontCharRendererAdjuster = battleObj.heroGo.AddMissingComponent(); behindCharRendererAdjuster = battleObj.heroRectTrans.Find("Hero/Follower/BattleHeroInfoBar/BehindHero").gameObject.AddMissingComponent(); frontCharRendererAdjuster.canvasOffset = BattleConst.BattleFrontCharUIOffset; behindCharRendererAdjuster.canvasOffset = BattleConst.BattleBehindCharUIOffset; } public void SetSortingOrder(int sortingOrder) { if (frontCharRendererAdjuster != null) { frontCharRendererAdjuster.SetSortingOrder(sortingOrder); } if (behindCharRendererAdjuster != null) { behindCharRendererAdjuster.SetSortingOrder(sortingOrder); } for (int i = 0; i < effectPlayers.Count; i++) { effectPlayers[i]?.ApplySortingOrder(); } } public void AddEffect(BattleEffectPlayer effectPlayer) { if (effectPlayer != null && !effectPlayers.Contains(effectPlayer)) { effectPlayers.Add(effectPlayer); } effectPlayer.SetSortingOrder(IsFront); } public void RemoveEffect(BattleEffectPlayer effectPlayer) { if (effectPlayers.Contains(effectPlayer)) { effectPlayers.Remove(effectPlayer); } } public void SetFront() { isFront = true; UpdateLayer(); } public void SetBack() { isFront = false; UpdateLayer(); } public void UpdateLayer() { for (int i = 0; i < effectPlayers.Count; i++) { effectPlayers[i].SetActive(isFront); } // 策划要在释放技能的时候 其他角色隐藏 这里在back的时候就直接设置成0 在最底下 看不到的地方 int baseOrder = isFront ? BattleConst.SkillMaskOrder : BattleConst.BattleBackgroundOrder; SetSortingOrder(baseOrder); } public bool IsFront() { return isFront; } }