yyl
22 小时以前 bcd1dcef07dc129d68539ca2d562c5df53007f36
Merge branch 'master' of http://192.168.1.20:10010/r/Project_SG_scripts
12个文件已修改
256 ■■■■■ 已修改文件
Main/System/BeautyMM/BeautyMMTravelWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatBulletView.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatManager.cs 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatPlayerMineCell.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatPlayerOtherCell.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Chat/ChatWin.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildBossManager.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Guild/GuildManager.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/ItemTip/ItemBatchUseWin.cs 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/KnapSack/Logic/ItemLogicUtility.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/HomeWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/TimingGift/TimingGiftWin.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/BeautyMM/BeautyMMTravelWin.cs
@@ -307,7 +307,7 @@
    void AddEnergy()
    {
        ItemLogicUtility.Instance.ShowItemBatchUseWin(BeautyMMManager.Instance.addEnergyItemID, ShowTip);
        ItemLogicUtility.Instance.ShowItemBatchUseWin(BeautyMMManager.Instance.addEnergyItemID, ShowTip, Language.Get("GuildBoss22"));
    }
    string ShowTip(long useCnt)
Main/System/Chat/ChatBulletView.cs
@@ -61,6 +61,8 @@
                    fmlv = fairyMember.FmLV;
                }
                return Language.Get("Chat16", RichTextMsgReplaceConfig.GetRichReplace("FAMILY", fmlv), data.Name, data.Content);
            case ChatChannel.CrossServer:
                return Language.Get("Chat17", data.Name, data.Content);
            default:
                return data.Content;
        }
Main/System/Chat/ChatManager.cs
@@ -115,7 +115,7 @@
    {
        talkDict.Clear();
        lastTalkDataDict.Clear();
        currentDay = -1;
        currentDayDict.Clear();
        nowChatChannel = ChatChannel.World;
        nowChatTab = ChatTab.World;
    }
@@ -413,13 +413,19 @@
        }
    }
    public int currentDay = -1;
    public Dictionary<ChatChannel, int> currentDayDict = new Dictionary<ChatChannel, int>();
    public bool TryAddDate(int allSeconds, ChatChannel type, bool isSendBullet)
    {
        DateTime talkTime = TimeUtility.GetTime((uint)allSeconds);
        if (talkTime.Day != currentDay)
        // 确保字典中包含该频道的条目
        if (!currentDayDict.ContainsKey(type))
        {
            currentDay = talkTime.Day;
            currentDayDict[type] = -1;
        }
        // 每个频道独立检查日期
        if (talkTime.Day != currentDayDict[type])
        {
            currentDayDict[type] = talkTime.Day;
            AddTalkData(type, new TalkData()
            {
                ChannelType = (byte)type,
@@ -434,7 +440,7 @@
    public void AddSysData(string msg, ArrayList infoList, ChatChannel type, bool isSendBullet)
    {
        int allSeconds = TimeUtility.AllSeconds;
        int allSeconds = type == ChatChannel.CrossServer ? TimeUtility.GetCommServerTick(GuildManager.Instance.zoneID) : TimeUtility.AllSeconds;
        // 如果隔天,增加日期行
        TryAddDate(allSeconds, type, isSendBullet);
@@ -464,7 +470,7 @@
            talkDict[type] = new List<TalkData>();
        }
        int allSeconds = TimeUtility.AllSeconds;
        int allSeconds = type == ChatChannel.CrossServer ? TimeUtility.GetCommServerTick(GuildManager.Instance.zoneID) : TimeUtility.AllSeconds;
        // 如果隔天,增加日期行
        TryAddDate(allSeconds, type, true);
@@ -572,6 +578,7 @@
    {
        ChatTab.World,
        ChatTab.Guild,
        ChatTab.CrossServer,
        // ChatTab.Person,
        // ChatTab.BlackList,
    };
@@ -583,8 +590,6 @@
        switch (chatTab)
        {
            case ChatTab.World:
                return true;
            case ChatTab.Guild:
                //没有公会
                if (!PlayerDatas.Instance.fairyData.HasFairy)
@@ -594,8 +599,17 @@
                    return false;
                }
                return true;
            default:
            case ChatTab.CrossServer:
                //没有合服
                if (GuildManager.Instance.zoneID <= 0)
                {
                    if (isTip)
                        SysNotifyMgr.Instance.ShowTip("CrossServerNoOpen");
                return false;
                }
                return true;
            default:
                return true;
        }
    }
@@ -697,8 +711,9 @@
{
    World = 0,      //世界
    Guild = 1,      //公会      
    Person = 2,     //私聊
    BlackList = 3,  //黑名单
    CrossServer = 2,    //跨服
    Person = 3,     //私聊
    BlackList = 4,  //黑名单
}
public enum ChatChannel
{
Main/System/Chat/ChatPlayerMineCell.cs
@@ -30,11 +30,16 @@
            string serverName = ServerListCenter.Instance.GetServerName(UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID));
            m_PlayerName.text = Language.Get("Chat08", serverName, PlayerDatas.Instance.baseData.PlayerName);
        }
        else
        else if (manager.nowChatTab == ChatTab.Guild)
        {
            int fmlv = PlayerDatas.Instance.fairyData.mine.FmLV;
            m_PlayerName.text = Language.Get("Chat08", RichTextMsgReplaceConfig.GetRichReplace("FAMILY", fmlv), PlayerDatas.Instance.baseData.PlayerName);
        }
        else if (manager.nowChatTab == ChatTab.CrossServer)
        {
            string serverName = ServerListCenter.Instance.GetServerName(UIHelper.GetServerIDByAccount(PlayerDatas.Instance.baseData.AccID));
            m_PlayerName.text = Language.Get("Chat08", serverName, PlayerDatas.Instance.baseData.PlayerName);
        }
    }
    public float GetHeight(string content, ArrayList list)
Main/System/Chat/ChatPlayerOtherCell.cs
@@ -32,7 +32,7 @@
            string serverName = ServerListCenter.Instance.GetServerName((int)data.ServerID);
            m_PlayerName.text = Language.Get("Chat08", serverName, data.Name);
        }
        else
        else if (manager.nowChatTab == ChatTab.Guild)
        {
            FairyMember fairyMember = PlayerDatas.Instance.fairyData.GetMember((int)data.PlayerID);
            int fmlv = 0;
@@ -42,6 +42,11 @@
            }
            m_PlayerName.text = Language.Get("Chat08", RichTextMsgReplaceConfig.GetRichReplace("FAMILY", fmlv), data.Name);
        }
        else if (manager.nowChatTab == ChatTab.CrossServer)
        {
            string serverName = ServerListCenter.Instance.GetServerName((int)data.ServerID);
            m_PlayerName.text = Language.Get("Chat08", serverName, data.Name);
        }
        
        avatarCell.SetListener(() =>
        {
Main/System/Chat/ChatWin.cs
@@ -22,7 +22,9 @@
    [SerializeField] TextEx txtSendChat;
    [SerializeField] ScrollerController scrWorld;
    [SerializeField] ScrollerController scrGuild;
    [SerializeField] ScrollerController scrCrossServer;
    [SerializeField] ButtonEx serversBtn;
    private int unreadMsgCount = 0;
    [SerializeField] ButtonEx btnNewMsgTip;
    [SerializeField] TextEx txtNewMsgTip;
@@ -32,6 +34,7 @@
    bool isSettingOpen = false;
    [SerializeField] ChatSettingButton btnWorldSetting;
    [SerializeField] ChatSettingButton btnGuildSetting;
    [SerializeField] ChatSettingButton btnCrossServerSetting;
    ChatManager manager { get { return ChatManager.Instance; } }
    protected override void InitComponent()
@@ -69,6 +72,11 @@
                RefreshChat(manager.nowChatChannel, scrGuild);
                ScrollerJump(scrGuild, ChatChannel.Guild);
            }
            else if (manager.nowChatChannel == ChatChannel.CrossServer)
            {
                RefreshChat(manager.nowChatChannel, scrCrossServer);
                ScrollerJump(scrCrossServer, ChatChannel.CrossServer);
            }
            ClearUnreadMsg();
        });
        btnSetting.SetListener(() =>
@@ -76,7 +84,10 @@
            isSettingOpen = !isSettingOpen;
            transSettings.SetActive(isSettingOpen);
        });
        serversBtn.SetListener(() =>
        {
            UIHelper.ShowServersPanel(GuildManager.Instance.crossServerIDList);
        });
    }
    // 清理未读消息状态
@@ -104,12 +115,18 @@
        manager.OnUpdatePlayerInfoEvent += OnUpdatePlayerInfoEvent;
        scrChatTab.OnRefreshCell += OnRefreshChatTabCell;
        scrWorld.OnGetDynamicSize += OnGetWorldChatDynamicSize;
        scrWorld.OnRefreshCell += OnRefreshWorldCell;
        scrWorld.mScrollRect.onValueChanged.AddListener(OnWorldScrollValChange);
        scrGuild.OnGetDynamicSize += OnGetGuildChatDynamicSize;
        scrGuild.OnRefreshCell += OnRefreshGuildCell;
        scrGuild.mScrollRect.onValueChanged.AddListener(OnGuildScrollValChange);
        scrCrossServer.OnGetDynamicSize += OnGetChatDynamicSize;
        scrCrossServer.OnRefreshCell += OnRefreshCell;
        scrCrossServer.mScrollRect.onValueChanged.AddListener(OnCrossServerScrollValChange);
        clickScreenOtherSpace.AddListener(OnClickScreenOtherSpace);
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
@@ -119,6 +136,7 @@
        transSettings.SetActive(isSettingOpen);
        btnWorldSetting.SetChannelType(ChatChannel.World);
        btnGuildSetting.SetChannelType(ChatChannel.Guild);
        btnCrossServerSetting.SetChannelType(ChatChannel.CrossServer);
        inputChat.characterLimit = ChatManager.Instance.characterLimit;
        CreaterAll(manager.nowChatTab);
    }
@@ -139,9 +157,15 @@
        scrWorld.OnGetDynamicSize -= OnGetWorldChatDynamicSize;
        scrWorld.OnRefreshCell -= OnRefreshWorldCell;
        scrWorld.mScrollRect.onValueChanged.RemoveListener(OnWorldScrollValChange);
        scrGuild.OnGetDynamicSize -= OnGetGuildChatDynamicSize;
        scrGuild.OnRefreshCell -= OnRefreshGuildCell;
        scrGuild.mScrollRect.onValueChanged.RemoveListener(OnGuildScrollValChange);
        scrCrossServer.OnGetDynamicSize -= OnGetChatDynamicSize;
        scrCrossServer.OnRefreshCell -= OnRefreshCell;
        scrCrossServer.mScrollRect.onValueChanged.RemoveListener(OnCrossServerScrollValChange);
        GlobalTimeEvent.Instance.secondEvent -= OnSecondEvent;
        clickScreenOtherSpace.RemoveAllListeners();
    }
@@ -165,6 +189,10 @@
        else if (channel == ChatChannel.Guild)
        {
            CreateScroller(scrGuild, channel);
        }
        else if (channel == ChatChannel.CrossServer)
        {
            CreateScroller(scrCrossServer, channel);
        }
    }
@@ -227,7 +255,10 @@
            {
                if (scrWorld.lockType != EnhanceLockType.LockVerticalBottom)
                    scrWorld.lockType = EnhanceLockType.LockVerticalBottom;
                if (scrGuild.lockType != EnhanceLockType.LockVerticalBottom)
                    scrGuild.lockType = EnhanceLockType.LockVerticalBottom;
                if (scrCrossServer.lockType != EnhanceLockType.LockVerticalBottom)
                    scrCrossServer.lockType = EnhanceLockType.LockVerticalBottom;
                // 如果回到底部,直接清零消息
                ClearUnreadMsg();
            }
@@ -236,6 +267,10 @@
            {
                if (scrWorld.lockType != EnhanceLockType.KeepVertical)
                    scrWorld.lockType = EnhanceLockType.KeepVertical;
                if (scrGuild.lockType != EnhanceLockType.KeepVertical)
                    scrGuild.lockType = EnhanceLockType.KeepVertical;
                if (scrCrossServer.lockType != EnhanceLockType.KeepVertical)
                    scrCrossServer.lockType = EnhanceLockType.KeepVertical;
            }
        }
    }
@@ -248,6 +283,10 @@
    private void OnGuildScrollValChange(Vector2 _pos)
    {
        OnScrollValChange(scrGuild, _pos);
    }
    private void OnCrossServerScrollValChange(Vector2 _pos)
    {
        OnScrollValChange(scrCrossServer, _pos);
    }
    private void OnScrollValChange(ScrollerController scorller, Vector2 _pos)
@@ -308,7 +347,11 @@
        scrGuild.lockType = EnhanceLockType.LockVerticalBottom; // 初始锁定底部
        scrGuild.SetActive(chatTab == ChatTab.Guild);
        transInput.SetActive(chatTab == ChatTab.World || chatTab == ChatTab.Guild);
        scrCrossServer.lockType = EnhanceLockType.LockVerticalBottom; // 初始锁定底部
        scrCrossServer.SetActive(chatTab == ChatTab.CrossServer);
        transInput.SetActive(true);
        serversBtn.SetActive(chatTab == ChatTab.CrossServer);
        CreateChatTabScroller();
@@ -324,6 +367,12 @@
                manager.nowChatChannel = ChatChannel.Guild;
                CreateScroller(scrGuild, ChatChannel.Guild);
                ScrollerJump(scrGuild, ChatChannel.Guild);
                ClearUnreadMsg();
                break;
            case ChatTab.CrossServer:
                manager.nowChatChannel = ChatChannel.CrossServer;
                CreateScroller(scrCrossServer, ChatChannel.CrossServer);
                ScrollerJump(scrCrossServer, ChatChannel.CrossServer);
                ClearUnreadMsg();
                break;
        }
@@ -354,6 +403,10 @@
        else if (type == ChatChannel.Guild)
        {
            RefreshChat(type, scrGuild, playerId, isUpdatePlayerInfo);
        }
        else if (type == ChatChannel.CrossServer)
        {
            RefreshChat(type, scrCrossServer, playerId, isUpdatePlayerInfo);
        }
    }
@@ -391,6 +444,8 @@
            return;
        if (type == ChatChannel.Guild && manager.nowChatTab != ChatTab.Guild)
            return;
        if (type == ChatChannel.CrossServer && manager.nowChatTab != ChatTab.CrossServer)
            return;
        // 1. 自己发送的消息 -> 强制跳转到底部 + 清零
        if (playerId == PlayerDatas.Instance.PlayerId)
        {
@@ -423,7 +478,7 @@
            }
            // 特殊情况:如果未读数量巨大(超过了总显示数量),说明整个列表都被刷新了,直接消零
            if (unreadMsgCount >= scrWorld.GetNumberOfCells(scrWorld.m_Scorller))
            if (unreadMsgCount >= scroller.GetNumberOfCells(scroller.m_Scorller))
            {
                ClearUnreadMsg();
            }
Main/System/Guild/GuildBossManager.cs
@@ -100,12 +100,14 @@
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeEventOnRelogin;
        GuildManager.Instance.EnterOrQuitGuildEvent += EnterOrQuitGuildEvent;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo += OnRefreshFairyInfo;
        ParseConfig();
    }
    public override void Release()
    {
        DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeEventOnRelogin;
        GuildManager.Instance.EnterOrQuitGuildEvent -= EnterOrQuitGuildEvent;
        PlayerDatas.Instance.fairyData.OnRefreshFairyInfo -= OnRefreshFairyInfo;
    }
    void OnBeforePlayerDataInitializeEventOnRelogin()
@@ -123,6 +125,10 @@
        taofaPlayerData.Clear();
    }
    private void OnRefreshFairyInfo()
    {
        UpdateRedpoint();
    }
    void EnterOrQuitGuildEvent(bool isEnter)
    {
Main/System/Guild/GuildManager.cs
@@ -64,6 +64,7 @@
    private void OnRefreshFairyInfo()
    {
        UpdateRequestRedpoint();
        UpdateDonateRedPoint();
    }
    void OnBeforePlayerDataInitialize()
Main/System/ItemTip/ItemBatchUseWin.cs
@@ -8,29 +8,38 @@
public class ItemBatchUseWin : UIBase
{
    [SerializeField] ItemCell itemCell;
    [SerializeField] Text itemCntTxt;
    [SerializeField] LongPressButton subBtn;
    [SerializeField] LongPressButton addBtn;
    [SerializeField] Text nameText;
    [SerializeField] Text countText;
    [SerializeField] Text descText;
    [SerializeField] SliderPanel sliderPanel;
    [SerializeField] Text tipText;
    [SerializeField] Button okBtn;
    [SerializeField] Text btnNameText;
    [SerializeField] Text titleText;
    public static Func<long, string> ShowTextEvent;
    public static int itemID;
    long curUseCount;
    long maxCount;
    public static string btnName;
    int useCnt;
    long maxCnt;
    protected override void InitComponent()
    {
        addBtn.SetListener(OnClickPlus);
        addBtn.onPress.AddListener(OnClickPlus);
        subBtn.SetListener(OnClickReduce);
        subBtn.onPress.AddListener(OnClickReduce);
        okBtn.AddListener(OnOK);
    }
    protected override void OnPreOpen()
    {
        useCnt = 1;
        Display();
    }
    void Display()
    {
        var key = "UseItemTitle_" + itemID;
        if (LanguageConfig.HasKey(key))
        {
@@ -40,32 +49,36 @@
        {
            titleText.text = Language.Get("UseItemDefault");
        }
        maxCount = PackManager.Instance.GetItemCountByID(PackType.Item, itemID);
        curUseCount = maxCount > 0 ? 1 : 0;
        itemCell.Init(new ItemCellModel(itemID, false, curUseCount));
        maxCnt = PackManager.Instance.GetItemCountByID(PackType.Item, itemID);
        useCnt = maxCnt > 0 ? 1 : 0;
        itemCell.Init(new ItemCellModel(itemID, false, useCnt));
        itemCell.button.AddListener(() =>
        {
            ItemTipUtility.Show(itemID);
        });
        RefreshCount();
        RefreshBtn();
        var itemConfig = ItemConfig.Get(itemID);
        nameText.text = itemConfig.ItemName;
        countText.text = Language.Get("storename12", maxCnt);
        descText.text = itemConfig.Description;
        OnSliderChange(useCnt);
        sliderPanel.Init((value) => { OnSliderChange(value); }, (int)maxCnt);
        btnNameText.text = btnName;
    }
    protected override void OnPreClose()
    void OnSliderChange(int value)
    {
    }
        useCnt = value;
        itemCell.countText.text = UIHelper.ReplaceLargeNum(useCnt);
    void RefreshCount()
    {
        itemCntTxt.text = curUseCount + "/" + maxCount;
        itemCell.countText.text = curUseCount.ToString();
        if (ShowTextEvent != null)
        {
            tipText.text = ShowTextEvent(curUseCount);
            tipText.text = ShowTextEvent(useCnt);
        }
        else
        {
@@ -74,66 +87,21 @@
    }
    void RefreshBtn()
    {
        if (curUseCount >= maxCount)
        {
            addBtn.interactable = false;
            addBtn.SetColorful(null, false);
        }
        else
        {
            addBtn.interactable = true;
            addBtn.SetColorful(null, true);
        }
        if (curUseCount == 0)
        {
            subBtn.interactable = false;
            subBtn.SetColorful(null, false);
        }
        else
        {
            subBtn.interactable = true;
            subBtn.SetColorful(null, true);
        }
    }
    void OnClickPlus()
    {
        if (curUseCount >= maxCount)
        {
            curUseCount = maxCount;
            return;
        }
        curUseCount++;
        RefreshCount();
        RefreshBtn();
    }
    void OnClickReduce()
    {
        if (curUseCount == 0)
            return;
        curUseCount--;
        RefreshCount();
        RefreshBtn();
    }
    void OnOK()
    {
        CloseWindow();
        if (curUseCount == 0)
        if (useCnt == 0)
        {
            SysNotifyMgr.Instance.ShowTip("UseItem1");
            return;
        }
        if (ItemLogicUtility.CheckItemCount(PackType.Item, itemID, curUseCount, 2))
        if (ItemLogicUtility.CheckItemCount(PackType.Item, itemID, useCnt, 1))
        {
            ItemLogicUtility.Instance.UseItem(PackManager.Instance.GetItemGUIDByID(itemID), (int)curUseCount);
            ItemLogicUtility.Instance.UseItem(PackManager.Instance.GetItemGUIDByID(itemID), useCnt);
        }
        SysNotifyMgr.Instance.ShowTip("UseOK");
    }
}
Main/System/KnapSack/Logic/ItemLogicUtility.cs
@@ -292,18 +292,20 @@
    /// </summary>
    /// <param name="itemID">要使用的物品</param>
    /// <param name="showTipEvent">参数为要使用的物品数量,返回值为文本</param>
    public void ShowItemBatchUseWin(int itemID, Func<long, string> showTipEvent)
    public void ShowItemBatchUseWin(int itemID, Func<long, string> showTipEvent, string btnName)
    {
        if (UIManager.Instance.IsOpened<ItemBatchUseWin>())
        {
            UIManager.Instance.CloseWindow<ItemBatchUseWin>();
        }
        if (!CheckItemCount(PackType.Item, itemID, 1, 2))
        //提示类型后续有变化,要约定下如何提示
        if (!CheckItemCount(PackType.Item, itemID, 1, 1))
        {
            return;
        }
        ItemBatchUseWin.itemID = itemID;
        ItemBatchUseWin.ShowTextEvent = showTipEvent;
        ItemBatchUseWin.btnName = btnName;
        UIManager.Instance.OpenWindow<ItemBatchUseWin>();
    }
Main/System/Main/HomeWin.cs
@@ -375,6 +375,10 @@
                    ChatManager.Instance.nowChatTab = ChatTab.Guild;
                    ChatManager.Instance.nowChatChannel = ChatChannel.Guild;
                    break;
                case ChatChannel.CrossServer:
                    ChatManager.Instance.nowChatTab = ChatTab.CrossServer;
                    ChatManager.Instance.nowChatChannel = ChatChannel.CrossServer;
                    break;
            }
        }
        UIManager.Instance.OpenWindow<ChatWin>();
Main/System/TimingGift/TimingGiftWin.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
public class TimingGiftWin : UIBase
{
@@ -10,7 +11,7 @@
    [SerializeField] TimingGiftCtgIdCell[] ctgIdCells;
    [SerializeField] TextEx timeText;
    [SerializeField] ImageEx bgImage;
    [SerializeField] RawImage bgImage;
    [SerializeField] ImageEx IconImage;
    [SerializeField] GradientText giftText; //"礼包"
    [SerializeField] OutlineEx giftTextOutline;
@@ -238,7 +239,7 @@
        leftButton.SetActive(isShowSwitch);
        rightButton.SetActive(isShowSwitch);
        bgImage.SetSprite($"TimingGiftBg_{manager.selectTabGiftId}");
        bgImage.SetTexture2DPNG(IconConfig.Get($"TimingGiftBg_{manager.selectTabGiftId}").sprite);
        bgImage.SetNativeSize();
        IconImage.SetSprite($"TimingGiftIcon_{manager.selectTabGiftId}");
        IconImage.SetNativeSize();