Bladeren bron

Merge branch 'master' of http://git.gfggame.com:3000/gfg/client

guodong 3 jaren geleden
bovenliggende
commit
685257edee

+ 2 - 2
FGUIProject/assets/DressUp/components/PartsListItem.xml

@@ -9,8 +9,8 @@
     <text id="n3_k6he" name="txtTitle" xy="35,187" pivot="0.5,0" size="144,39" fontSize="28" color="#fff6e9" align="center" leading="0" text="繁星点点啊"/>
     <image id="n4_qsvd" name="iconSelected" src="qsvd2l" fileName="images/hz_xzyfxz.png" xy="15,0"/>
     <loader id="n7_d4iw" name="rarity" xy="158,14" size="44,94" url="ui://eg2y0ldpd4iw52" autoSize="true"/>
-    <loader id="n5_8xpg" name="ScoreType" xy="23,125" size="50,50" touchable="false" url="ui://eg2y0ldp842s6h" fill="scale"/>
-    <text id="n6_8xpg" name="txtScore" xy="79,128" size="77,41" fontSize="30" color="#e0d1c1" align="center" autoClearText="true" text="3500"/>
+    <loader id="n5_8xpg" name="ScoreType" xy="19,125" size="50,50" touchable="false" url="ui://eg2y0ldp842s6h" fill="scale"/>
+    <text id="n6_8xpg" name="txtScore" xy="66,128" pivot="0.5,0" size="77,41" fontSize="30" color="#fcf7e6" align="center" strokeColor="#a7854a" strokeSize="2" autoClearText="true" text="3500"/>
     <image id="n8_pjip" name="imgNeed" src="pjip2z" fileName="images/hz_bcbc_1.png" xy="2,63"/>
   </displayList>
 </component>

+ 28 - 7
GameClient/Assets/Editor/Excel/Scanner/ItemApproachScanner.cs

@@ -19,7 +19,7 @@ namespace GFGEditor
         public static void startScan()
         {
             ItemCfg[] dataArray = ItemCfgArray.Instance.dataArray;
-            GetApproachCall[] actions = new GetApproachCall[] { GetClothingShopApproach, GetZhaiXingApproach, GetStoryLevelApproach, GetClothingSyntheticApproach, GetSuitGuideApproach, GetSuitSyntheticApproach };
+            GetApproachCall[] actions = new GetApproachCall[] { GetClothingShopApproach, GetZhaiXingApproach, GetStoryLevelApproach, GetClothingSyntheticApproach, GetSuitGuideApproach, GetSuitSyntheticApproach, GetClothingDecomposeApproach };
             Dictionary<SuitCfg, List<int>> suitDic = new Dictionary<SuitCfg, List<int>>();
             int suitPartTotalCount = 0;
             foreach (ItemCfg cfg in dataArray)
@@ -73,12 +73,12 @@ namespace GFGEditor
                 return;
             }
             var suitCfg = SuitCfgArray.Instance.GetCfg(itemCfg.suitId);
-            if(suitCfg == null)
+            if (suitCfg == null)
             {
                 return;
             }
             suitDic.TryGetValue(suitCfg, out var partsList);
-            if(partsList == null)
+            if (partsList == null)
             {
                 partsList = new List<int>();
                 suitDic[suitCfg] = partsList;
@@ -137,6 +137,27 @@ namespace GFGEditor
             }
             return null;
         }
+        /// <summary>
+        /// 尝试获取服装分解产出途径
+        /// </summary>
+        /// <param name="itemId"></param>
+        /// <returns></returns>
+        private static string GetClothingDecomposeApproach(int itemId)
+        {
+            DecomposeCfgArray manager = DecomposeCfgArray.Instance;
+            DecomposeCfg[] dataArray = manager.dataArray;
+            foreach (DecomposeCfg cfg in dataArray)
+            {
+                for (int i = 0; i < cfg.itemsArr.Length; i++)
+                {
+                    if (cfg.itemsArr[i][0] == itemId)
+                    {
+                        return "FU_ZHUANG_DECOMPOSE";
+                    }
+                }
+            }
+            return null;
+        }
 
         /// <summary>
         /// 尝试获取摘星(抽奖)产出途径
@@ -200,20 +221,20 @@ namespace GFGEditor
         private static string GetClothingSyntheticApproach(int itemId)
         {
             var itemCfg = ItemCfgArray.Instance.GetCfg(itemId);
-            if(itemCfg == null)
+            if (itemCfg == null)
             {
                 return null;
             }
-            if(itemCfg.suitId <= 0)
+            if (itemCfg.suitId <= 0)
             {
                 return null;
             }
             var suitCfg = SuitCfgArray.Instance.GetCfg(itemCfg.suitId);
-            if(suitCfg == null)
+            if (suitCfg == null)
             {
                 return null;
             }
-            if(suitCfg.syntheticType <= 0)
+            if (suitCfg.syntheticType <= 0)
             {
                 return null;
             }

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Constant/ConstFunctionId.cs

@@ -10,6 +10,10 @@ namespace GFGGame
         /// </summary>
         public const string FU_ZHUANG_DIAN = "FU_ZHUANG_DIAN";
         /// <summary>
+        /// 服装分解
+        /// </summary>
+        public const string FU_ZHUANG_DECOMPOSE = "FU_ZHUANG_DECOMPOSE";
+        /// <summary>
         /// 剧情关卡
         /// </summary>
         public const string JU_QING_GUAN_QIA = "JU_QING_GUAN_QIA";

+ 5 - 1
GameClient/Assets/Game/HotUpdate/Constant/ConstMessage.cs

@@ -9,10 +9,14 @@ namespace GFGGame
 
         public const string SUIT_BOX_STATUS_CHANGED = "SUIT_BOX_STATUS_CHANGED";
         public const string CJ_FINISH = "CJ_FINISH";
+
         public const string MAIL_REFRESH = "MAIL_REFRESH";
         public const string MAIL_CHANGE = "MAIL_CHANGE";
-        public const string MAIL_ADD = "MAIL_ADD";
+        public const string MAIL_REWARD = "MAIL_REWARD";
+        public const string MAIL_ALLREWARD = "MAIL_ALLREWARD";
         public const string MAIL_DELETE = "MAIL_DELETE";
+        public const string MAIL_AllDELETE = "MAIL_AllDELETE";
+
         public const string DRESS_FILTER = "DRESS_FILTER";
         public const string DRESS_SEARCH = "DRESS_SEARCH";
         public const string CARD_CHOOSE = "CARD_CHOOSE";

+ 7 - 1
GameClient/Assets/Game/HotUpdate/Controller/GameController.cs

@@ -220,12 +220,13 @@ namespace GFGGame
             DailyTaskSProxy.ReqDailyTaskInfos().Coroutine();
             ActivitySProxy.ReqDailyLoginInfos().Coroutine();
             NoticeSProxy.ReqSystemNoticeList().Coroutine();
-            MailSProxy.ReqMailCount().Coroutine();
+
             EquipDataCache.cacher.autoPlay = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY) <= 0 ? false : true;
             EquipDataCache.cacher.fightSpeed = StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY_SPEED) <= 1 ? 1 : StorageDataManager.Instance.GetStorageValue(ConstStorageId.STORAGE_AUTO_PLAY_SPEED);
             GameGlobal.skipCheckOpen = StorageDataManager.Instance.GetStorageValue(ConstStorageId.SKIP_CHECK_OPEN) <= 0 ? false : true;
 
 
+
             bool result = await FieldSProxy.ReqFieldInstanceInfos();
             if (result && FieldDataManager.Instance.fieldInfos.hasBonus)
             {
@@ -235,6 +236,11 @@ namespace GFGGame
                     ViewManager.Show<FieldFightEndView>();
                 }
             }
+            bool result2 = await MailSProxy.ReqMailCount();
+            if (result2)
+            {
+                MailSProxy.ReqMailList(0, MailDataManager.Instance.TotolCount, true).Coroutine();
+            }
         }
     }
 }

+ 43 - 17
GameClient/Assets/Game/HotUpdate/Data/MailDataManager.cs

@@ -40,28 +40,56 @@ namespace GFGGame
             get { return _startIndex; }
             set { _startIndex = value; }
         }
-
+        public Dictionary<long, MailInfo> _mailInfoDic = new Dictionary<long, MailInfo>();
+        public Dictionary<long, MailInfo> MailInfoDic
+        {
+            get
+            {
+                return _mailInfoDic;
+            }
+        }
 
         public List<MailInfo> mailInfos = new List<MailInfo>();
-        public void UpdateMailInfoList(List<MailInfo> list)
+        public void RefreshMailInfoDic(bool sort)
         {
-            mailInfos.Clear();
-            mailInfos = list;
+            if (sort)
+            {
+                _mailInfoDic.Clear();
+            }
+        }
+
+        public void UpdateMainInfoDic(long mailId, MailInfo mailInfo)
+        {
+            if (!_mailInfoDic.ContainsKey(mailId))
+            {
+                _mailInfoDic.Add(mailId, mailInfo);
+            }
+            else
+            {
+                _mailInfoDic[mailId] = mailInfo;
+            }
         }
         public void UpdateMailContent(long mailId, int state, string content = "", List<ItemData> rewards = null)
         {
-            for (int i = 0; i < mailInfos.Count; i++)
+            _mailInfoDic[mailId].state = state;
+            if (content != "") _mailInfoDic[mailId].content = content;
+            if (rewards != null) _mailInfoDic[mailId].rewards = rewards;
+        }
+
+
+        public List<MailInfo> GetMailInfos(int index, int count)
+        {
+            List<MailInfo> mailInfos = new List<MailInfo>();
+            for (int i = 0; i < count; i++)
             {
-                if (mailInfos[i].mailId == mailId)
-                {
-                    mailInfos[i].state = state;
-                    if (content != "") mailInfos[i].content = content;
-                    if (rewards != null) mailInfos[i].rewards = rewards;
-                    break;
-                }
+                if (index + i + 1 > _mailInfoDic.Count) break;
+                MailInfo mailInfo = _mailInfoDic.ElementAt(index + i).Value;
+                mailInfos.Add(mailInfo);
             }
+            return mailInfos;
         }
 
+
         /// <summary>
         /// 根据邮件Id获取邮件信息
         /// </summary>
@@ -69,12 +97,10 @@ namespace GFGGame
         /// <returns></returns>
         public MailInfo GetMailInfoById(long mailId)
         {
-            for (int i = 0; i < mailInfos.Count; i++)
+
+            if (_mailInfoDic.ContainsKey(mailId))
             {
-                if (mailInfos[i].mailId == mailId)
-                {
-                    return mailInfos[i];
-                }
+                return _mailInfoDic[mailId];
             }
             return null;
         }

+ 18 - 0
GameClient/Assets/Game/HotUpdate/Data/RedDotDataManager.cs

@@ -46,5 +46,23 @@ namespace GFGGame
         {
             return ActivityDataManager.Instance.dailyLoginBonusStatus == ConstBonusStatus.CAN_GET;
         }
+        /// <summary>
+        /// 有邮件未读或未领奖励
+        /// </summary>
+        /// <returns></returns>
+        public bool GetMailRed()
+        {
+            if (MailDataManager.Instance.UnreadCount > 0) return true;
+            Dictionary<long, MailInfo> mailInfoDic = MailDataManager.Instance.MailInfoDic;
+            foreach (MailInfo mailInfo in mailInfoDic.Values)
+            {
+                if (MailDataManager.Instance.GetMailState(mailInfo) == 1) return false;//数据已排序,第一个已读,则所没有含奖邮件
+                if (MailDataManager.Instance.GetMailState(mailInfo) == 3) return false;//数据已排序,第一个已领,则所有奖励已领
+                if (MailDataManager.Instance.GetMailState(mailInfo) == 2) return true;//数据已排序,有奖励未领
+
+            }
+
+            return false;
+        }
     }
 }

+ 11 - 7
GameClient/Assets/Game/HotUpdate/ServerProxy/MailSProxy.cs

@@ -46,6 +46,7 @@ namespace GFGGame
             {
                 if (response.Error == ErrorCode.ERR_Success)
                 {
+                    MailDataManager.Instance.RefreshMailInfoDic(sort);
                     List<MailInfo> mailInfos = new List<MailInfo>();
                     for (int i = 0; i < response.mailList.Count; i++)
                     {
@@ -55,9 +56,10 @@ namespace GFGGame
                         mailInfo.timeSec = response.mailList[i].TimeSec;
                         mailInfo.state = response.mailList[i].Status;
                         mailInfo.hasItem = response.mailList[i].HasItem;
-                        mailInfos.Add(mailInfo);
+                        // mailInfos.Add(mailInfo);
+                        MailDataManager.Instance.UpdateMainInfoDic(mailInfo.mailId, mailInfo);
                     }
-                    MailDataManager.Instance.UpdateMailInfoList(mailInfos);
+                    // MailDataManager.Instance.UpdateMailInfoList(mailInfos);
 
                     return true;
                 }
@@ -78,8 +80,9 @@ namespace GFGGame
                     int state = response.Status;
                     string content = response.MailDetail.Content;
                     List<ItemData> itemDatas = ItemUtil.CreateItemDataList(response.MailDetail.ItemList);
-
                     MailDataManager.Instance.UpdateMailContent(response.MailId, state, content, itemDatas);
+                    EventAgent.DispatchEvent(ConstMessage.MAIL_REFRESH);
+
                     return true;
                 }
             }
@@ -97,7 +100,7 @@ namespace GFGGame
                     List<ItemData> itemDatas = MailDataManager.Instance.GetMailInfoById(response.MailId).rewards;
                     BonusController.TryShowBonusList(itemDatas);
 
-                    EventAgent.DispatchEvent(ConstMessage.MAIL_REFRESH);
+                    EventAgent.DispatchEvent(ConstMessage.MAIL_REWARD);
                     return true;
                 }
             }
@@ -114,7 +117,7 @@ namespace GFGGame
                 {
                     List<ItemData> itemDatas = ItemUtil.CreateItemDataList(response.ItemList);
                     BonusController.TryShowBonusList(itemDatas);
-                    EventAgent.DispatchEvent(ConstMessage.MAIL_REFRESH);
+                    EventAgent.DispatchEvent(ConstMessage.MAIL_ALLREWARD);
 
                     return true;
                 }
@@ -130,7 +133,8 @@ namespace GFGGame
                 if (response.Error == ErrorCode.ERR_Success)
                 {
                     MailDataManager.Instance.TotolCount = response.TotolCount;
-                    // EventAgent.DispatchEvent(ConstMessage.MAIL_CHANGE);
+
+                    EventAgent.DispatchEvent(ConstMessage.MAIL_DELETE);
 
                     return true;
                 }
@@ -148,7 +152,7 @@ namespace GFGGame
                     if (response.DeleteCount > 0)
                     {
                         MailDataManager.Instance.TotolCount = MailDataManager.Instance.TotolCount - response.DeleteCount;
-                        EventAgent.DispatchEvent(ConstMessage.MAIL_CHANGE);
+                        EventAgent.DispatchEvent(ConstMessage.MAIL_AllDELETE);
 
                     }
 

+ 6 - 2
GameClient/Assets/Game/HotUpdate/Views/ClothingSynthetic/ClothingSyntheticView.cs

@@ -161,7 +161,9 @@ namespace GFGGame
             {
                 ItemData itemData = _materiarsOfSelectedItem[i];
                 int num = ItemDataManager.GetItemNum(itemData.id);
-                int numSynthetic = Mathf.Max(num - 1, 0);
+                ItemCfg materialCfg = ItemCfgArray.Instance.GetCfg(itemData.id);
+                bool isDressUp = materialCfg.itemType == ConstItemType.DRESS_UP;
+                int numSynthetic = isDressUp ? Mathf.Max(num - 1, 0) : Mathf.Max(num, 0);
                 if (numSynthetic < itemData.num)
                 {
                     PromptController.Instance.ShowFloatTextPrompt("材料不足!", MessageType.WARNING);
@@ -322,7 +324,9 @@ namespace GFGGame
                     listItem.m_txtName.text = ItemUtil.GetItemName(itemData.id);
                     listItem.m_loaderIcon.url = ResPathUtil.GetIconPath(materiasItemCfg);
                     int num = ItemDataManager.GetItemNum(itemData.id);
-                    int numSynthetic = Mathf.Max(num - 1, 0);
+                    ItemCfg materialCfg = ItemCfgArray.Instance.GetCfg(itemData.id);
+                    bool isDressUp = materialCfg.itemType == ConstItemType.DRESS_UP;
+                    int numSynthetic = isDressUp ? Mathf.Max(num - 1, 0) : Mathf.Max(num, 0);
                     listItem.m_groupCount.m_txtProgess.text = numSynthetic + "/" + itemData.num;
                     listItem.m_loaderIcon.visible = true;
                     listItem.m_groupCount.target.visible = true;

+ 4 - 0
GameClient/Assets/Game/HotUpdate/Views/CommonGame/ApproachOfItemView.cs

@@ -112,6 +112,10 @@ namespace GFGGame
                     int count = temp.Length > 2 ? (int)temp[2] : 1;
                     ViewManager.Show(ViewName.CLOTHING_SHOP_VIEW, new object[] { null, null, _itemId, count }, _fromeViewDatas, true, true);
                     break;
+                case ConstFunctionId.FU_ZHUANG_DECOMPOSE:
+                    this.Hide();
+                    ViewManager.Show<ClothingDecomposeView>(null, _fromeViewDatas);
+                    break;
                 case ConstFunctionId.JU_QING_GUAN_QIA:
                     string value = infos[1];
                     var levelCfgId = int.Parse(value);

+ 3 - 2
GameClient/Assets/Game/HotUpdate/Views/Mail/MailContentView.cs

@@ -28,6 +28,7 @@ namespace GFGGame
             _ui.m_listReward.itemRenderer = RenderListRewardItem;
             _ui.m_btnGet.onClick.Add(OnClickBtnGet);
             _ui.m_btnDelete.onClick.Add(OnClickBtnDelete);
+            EventAgent.AddEventListener(ConstMessage.MAIL_REWARD, UpdateNormal);
 
         }
         protected override void OnShown()
@@ -35,8 +36,8 @@ namespace GFGGame
             base.OnShown();
             // EventAgent.AddEventListener(ConstMessage.MAIL_CHANGE, UpdateNormal);
 
-            _childIndex = (int)this.viewData;
-            mailInfo = MailDataManager.Instance.mailInfos[_childIndex];
+            long mailId = (long)this.viewData;
+            mailInfo = MailDataManager.Instance.GetMailInfoById(mailId);
             _ui.m_c1.selectedIndex = mailInfo.rewards.Count == 0 ? 0 : 1;
             _ui.m_txtTitle.text = mailInfo.title;
             _ui.m_ComContent.target.scrollPane.ScrollTop();

+ 34 - 41
GameClient/Assets/Game/HotUpdate/Views/Mail/MailView.cs

@@ -18,6 +18,8 @@ namespace GFGGame
         private int _firstChildIndex = 0;//列表显示内容得一个项的显示对象索引
 
         public bool _canShowContent = false;//获取内容数据返回前不可查看
+        public List<MailInfo> mailInfos = new List<MailInfo>();
+
         public override void Dispose()
         {
             base.Dispose();
@@ -34,17 +36,17 @@ namespace GFGGame
             viewAnimationType = EnumViewAnimationType.ZOOM_CENTER;
 
             _ui.m_list.itemRenderer = RenderListItem;
-            _ui.m_list.scrollPane.onScrollEnd.Add(OnListScrollEnd);
-            _ui.m_list.scrollPane.onScroll.Add(OnListScroll);
             _ui.m_list.SetVirtual();
 
             _ui.m_btnGet.onClick.Add(OnClickBtnGet);
             _ui.m_btnDelete.onClick.Add(OnClickBtnDelete);
-            EventAgent.AddEventListener(ConstMessage.MAIL_REFRESH, () =>
-            {
-                _ui.m_list.RefreshVirtualList();
-            });
 
+
+            EventAgent.AddEventListener(ConstMessage.MAIL_REFRESH, RefreshList);
+            EventAgent.AddEventListener(ConstMessage.MAIL_REWARD, RefreshList);
+            EventAgent.AddEventListener(ConstMessage.MAIL_ALLREWARD, UpdateNormal);
+            EventAgent.AddEventListener(ConstMessage.MAIL_DELETE, UpdateNormal);
+            EventAgent.AddEventListener(ConstMessage.MAIL_AllDELETE, UpdateNormal);
             EventAgent.AddEventListener(ConstMessage.MAIL_CHANGE, UpdateNormal);
 
             mailDataMgr = MailDataManager.Instance;
@@ -68,62 +70,57 @@ namespace GFGGame
 
         private void RenderListItem(int index, GObject obj)
         {
-            int childIndex = _ui.m_list.ItemIndexToChildIndex(index);
             UI_ListItem item = UI_ListItem.Proxy(obj);
-            if (mailDataMgr.mailInfos.Count == 0) return;
-            MailInfo data = mailDataMgr.mailInfos[childIndex];
+            if (index + 1 > mailInfos.Count) return;
+            MailInfo data = mailInfos[index];
+
             item.m_c1.selectedIndex = mailDataMgr.GetMailState(data);
-            item.m_txtTitle.text = data.title;// string.Format("{0}...", data.content.Length > 10 ? data.content.Substring(0, 10) : data.content);
+            item.m_txtTitle.text = data.title;
             string str = TimeUtil.FormattingTime(TimeHelper.ServerNowSecs, ((int)data.timeSec + _retainDay * TimeUtil.SECOND_PER_DAY));
             item.m_txtTime.text = string.Format("剩余时间:{0}", str);
-            if (item.target.data == null)
+            if (item.m_btnLook.data == null)
             {
                 item.m_btnLook.onClick.Add(OnClickBtnLook);
             }
-            item.target.data = index;
             item.m_btnLook.data = index;
 
         }
         private async void OnClickBtnLook(EventContext context)
         {
-            if (!_canShowContent) return;
             int index = (int)(context.sender as GObject).data;
-            int childIndex = (int)_ui.m_list.ItemIndexToChildIndex(index);
-            bool result = await MailSProxy.ReqMailContent(mailDataMgr.mailInfos[childIndex].mailId);
+
+            bool result = await MailSProxy.ReqMailContent(mailInfos[index].mailId);
             if (result)
             {
-                ViewManager.Show<MailContentView>(childIndex);
+                ViewManager.Show<MailContentView>(mailInfos[index].mailId);
             }
         }
 
 
-        private void OnListScroll()
-        {
-            _canShowContent = false;
-        }
-        private void OnListScrollEnd()
-        {
-            _firstChildIndex = (int)_ui.m_list.GetChildAt(0).data;
-            RefreshMailInfo(_firstChildIndex, false);
-        }
-
         private async void RefreshMailInfo(int index, bool needSort)
         {
-            bool result = await MailSProxy.ReqMailList(index, _showCount, needSort);
+            if (mailDataMgr.TotolCount == 0) return;
+            if (needSort)
+            {
+                _ui.m_list.ScrollToView(0);
+            }
+            bool result = await MailSProxy.ReqMailList(index, mailDataMgr.TotolCount, needSort);
             if (result)
             {
-                _ui.m_list.RefreshVirtualList();
+                mailInfos = mailDataMgr.GetMailInfos(index, mailDataMgr.TotolCount);
+                RefreshList();
                 _canShowContent = true;
             }
         }
+        private void RefreshList()
+        {
+            _ui.m_list.RefreshVirtualList();
 
-        private async void OnClickBtnGet()
+        }
+        private void OnClickBtnGet()
         {
-            bool result = await MailSProxy.ReqAllMailRewards();
-            if (result)
-            {
-                RefreshMailInfo(_firstChildIndex, false);
-            }
+            MailSProxy.ReqAllMailRewards().Coroutine();
+
         }
 
         private void OnClickBtnDelete()
@@ -133,14 +130,10 @@ namespace GFGGame
                 SendDeleteAll();
             });
         }
-        private async void SendDeleteAll()
+        private void SendDeleteAll()
         {
-            bool result = await MailSProxy.ReqDeleteAllMails();
-            if (result)
-            {
-                _ui.m_list.ScrollToView(0);
-                RefreshMailInfo(0, true);
-            }
+            MailSProxy.ReqDeleteAllMails().Coroutine();
+
         }
         protected override void OnHide()
         {

+ 1 - 0
GameClient/Assets/Game/HotUpdate/Views/MainUI/MainUIView.cs

@@ -362,6 +362,7 @@ namespace GFGGame
             RedDotController.Instance.SetComRedDot(_btnGongGao, RedDotDataManager.Instance.GetNoticeRed());
             RedDotController.Instance.SetComRedDot(_btnRenWu, RedDotDataManager.Instance.GetTaskRed());
             RedDotController.Instance.SetComRedDot(_ui.m_btnDailyLogin.target, RedDotDataManager.Instance.GetDailyLoginRed());
+            RedDotController.Instance.SetComRedDot(_btnYouJian, RedDotDataManager.Instance.GetMailRed());
         }
 
 

BIN
GameClient/Assets/ResIn/Config/excelConfig.sqlite.bytes


BIN
GameClient/Assets/ResIn/UI/DressUp/DressUp_fui.bytes