using UnityEngine;
|
using System.Collections.Generic;
|
|
public class BattleObjectLayerMgr
|
{
|
public BattleObject battleObj;
|
|
// 角色阴影 头顶的血条国籍等
|
public RendererAdjuster frontCharRendererAdjuster;
|
|
public RendererAdjuster behindCharRendererAdjuster;
|
|
private List<BattleEffectPlayer> effectPlayers = new List<BattleEffectPlayer>();
|
|
private bool isFront = true;
|
|
public BattleObjectLayerMgr()
|
{
|
|
}
|
|
public void Init(BattleObject battleObj)
|
{
|
this.battleObj = battleObj;
|
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 (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;
|
}
|
}
|