using System; using UnityEngine; namespace YIUIFramework { /// /// 红点 管理器 /// public partial class RedDotMgr { /// /// 获取这个红点数据 /// public RedDotData GetData(int key) { m_AllRedDotData.TryGetValue(key, out var data); if (data == null) { if (!Disposed) { Debug.LogError($"没有获取到这个红点数据 {key} Tips:如果是新增的注意需要ET编译过 否则就是没有 请检查"); } } return data; } /// /// 添加变化监听 /// public bool AddChanged(int key, Action action) { var data = GetData(key); if (data == null) { return false; } data.AddOnChanged(action); return true; } /// /// 移除变化监听 /// public bool RemoveChanged(int key, Action action) { var data = GetData(key); if (data == null) { return false; } data.RemoveChanged(action); return true; } /// /// 设置对应红点的数量 /// public bool SetCount(int key, int count) { var data = GetData(key); if (data == null) return false; if (SyncSetCount) { return data.TrySetCount(count); } else { return TryDirtySetCount(data, count); } } /// /// 获取某个红点的当前数量 /// 如果他的tips被关闭 数量=0 /// /// key /// 真实数量 /// public int GetCount(int key, bool isReal = false) { var data = GetData(key); if (data == null) { return 0; } return isReal ? data.RealCount : data.Count; } /// /// 设置此红点是否提示 /// (可关闭红点 这样红点就不会一直提示了 给玩家设置的) /// public bool SetTips(int key, bool tips) { var data = GetData(key); return data != null && data.SetTips(tips); } public void DeletePlayerTipsPrefs(int key) { var data = GetData(key); data?.DeletePlayerTipsPrefs(); } } }