/******************************************************************************** 游戏中红点统一管理 *********************************************************************************/ using UnityEngine; using System.Collections.Generic; public class RedTipPoint : MonoBehaviour { public enum PointType { WorldBoss, PrivateBoss, Boss, HomeBoss, PetBook, PetBookLevel, GuildXiulian, //FunctionEx上的红点 Equip, // 锻造 Skill, // 技能 Pet, //宠物 Marry, // 婚姻 MeridiaSoul, // 境界 Magic, // 法宝 Ride, //坐骑 Piano, // 竖琴 Wing, // 翅膀 Qilinbi, //麒麟臂 Soul, // 魂器 Mask, // 面具 Huopao, //火炮 GuildApply, None, } private static List Static_RedTipPoints = new List(); private static Dictionary Static_PointStates = new Dictionary(); public static void RedPointStateChange(PointType pointType, bool state) { if (state == false && Static_PointStates.ContainsKey(pointType) == false) return; if (state && Static_PointStates.ContainsKey(pointType)) return; if (state) Static_PointStates[pointType] = 1; else if (Static_PointStates.ContainsKey(pointType)) Static_PointStates.Remove(pointType); for(int i=0;i< Static_RedTipPoints.Count;i++) { Static_RedTipPoints[i].StateChange(); } } //FunctionEx上的进阶红点特殊判断一下 /// /// 设置进阶项Icon红点状态 /// /// 进阶类型:AdvanceBase.AdvanceType /// 状态 public static void SetAdvanceRedTipState(AdvanceBase.AdvanceType advanceType, bool state) { PointType realType = PointType.None; switch (advanceType) { case AdvanceBase.AdvanceType.Ride: realType = PointType.Ride; break; case AdvanceBase.AdvanceType.Piano: realType = PointType.Piano; break; case AdvanceBase.AdvanceType.Wing: realType = PointType.Wing; break; case AdvanceBase.AdvanceType.Qilinbi: realType = PointType.Qilinbi; break; case AdvanceBase.AdvanceType.Soul: realType = PointType.Soul; break; case AdvanceBase.AdvanceType.Mask: realType = PointType.Mask; break; case AdvanceBase.AdvanceType.Huopao: realType = PointType.Huopao; break; } if (realType != PointType.None) { RedPointStateChange(realType, state); } } public static void DelResScript(RedTipPoint red) { if (Static_RedTipPoints.Contains(red)) Static_RedTipPoints.Remove(red); } public static void AddResScript(RedTipPoint red) { if (Static_RedTipPoints.Contains(red) == false) Static_RedTipPoints.Add(red); } public PointType _Type; public PointType[] _Types; public void StateChange() { if (gameObject == null) return; bool isShow = false; if (Static_PointStates.ContainsKey(_Type)) isShow = true; if(isShow==false) { for(int i=0;i<_Types.Length;i++) { if(Static_PointStates.ContainsKey(_Types[i])) { isShow = true; break; } } } gameObject.SetActive(isShow); } public void Init() { Awake(); } private void Awake() { StateChange(); AddResScript(this); } private void OnDestroy() { DelResScript(this); } }