lcy
2026-06-22 4923f8cdbe7035fff6a657eb3ad0f91bf10e4ccc
628 节假日活动 入口统一用渐变字,活动表添加统一配置渐变项
8个文件已修改
65 ■■■■■ 已修改文件
Main/Config/Configs/ActSpecialSaleConfig.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityCheckInWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityGiftWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityManager.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityPopWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityShopWin.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/FestivalActivity/FestivalActivityWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Main/HomeWin.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/Config/Configs/ActSpecialSaleConfig.cs
@@ -1,6 +1,6 @@
//--------------------------------------------------------
//    [Author]:           YYL
//    [  Date ]:           Monday, May 11, 2026
//    [  Date ]:           2026年6月22日
//--------------------------------------------------------
using System.Collections.Generic;
@@ -23,6 +23,8 @@
    public int[][] PopItems;
    public float[] OriginalPrices;
    public float[] PercentageTexts;
    public string[] GradientColor;
    public string OutlineColor;
    public override int LoadKey(string _key)
    {
@@ -83,6 +85,10 @@
                     float.TryParse(PercentageTextsStringArray[i],out PercentageTexts[i]);
                }
            }
            GradientColor = tables[7].Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);
            OutlineColor = tables[8];
        }
        catch (Exception exception)
        {
Main/System/FestivalActivity/FestivalActivityCheckInWin.cs
@@ -5,6 +5,8 @@
    [SerializeField] ButtonEx closeButton;
    [SerializeField] TextEx timeText;
    [SerializeField] FestivalActivityCheckInCell[] cells;
    [SerializeField] GradientText titleText;
    [SerializeField] OutlineEx titleOutline;
    FestivalActivityCheckInManager manager => FestivalActivityCheckInManager.Instance;
    protected override void InitComponent()
    {
@@ -15,6 +17,7 @@
        GeneralActInfoManager.Instance.OnUpdateActSignInfosEvent += OnUpdateActSignInfosEvent;
        TimeMgr.Instance.OnDayEvent += OnDayEvent;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        FestivalActivityManager.Instance.ApplyTitleStyle(titleText, titleOutline);
        Display();
    }
    protected override void OnPreClose()
Main/System/FestivalActivity/FestivalActivityGiftWin.cs
@@ -8,6 +8,8 @@
    [SerializeField] ScrollerController scroller;
    [SerializeField] TextEx timeText;
    FestivalActivityManager manager => FestivalActivityManager.Instance;
    [SerializeField] GradientText titleText;
    [SerializeField] OutlineEx titleOutline;
    StoreModel storeModel => StoreModel.Instance;
    protected override void InitComponent()
    {
@@ -17,6 +19,7 @@
    protected override void OnPreOpen()
    {
        scroller.OnRefreshCell += OnRefreshCell;
        manager.ApplyTitleStyle(titleText, titleOutline);
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
        storeModel.RefreshBuyShopLimitEvent += RefreshBuyShopLimitEvent;
Main/System/FestivalActivity/FestivalActivityManager.cs
@@ -227,6 +227,42 @@
        };
    }
    /// <summary>
    /// 将当期 FestivalActivity 对应的 ActSpecialSaleConfig 渐变颜色/描边颜色套用到标题组件。
    /// 配置为空时保持预制体默认颜色。
    /// </summary>
    public void ApplyTitleStyle(GradientText titleText, OutlineEx titleOutline)
    {
        var act = GetActInfo();
        if (act == null) return;
        var config = ActSpecialSaleConfig.Get(act.CfgID);
        if (config == null) return;
        if (titleText != null && config.GradientColor != null && config.GradientColor.Length >= 2
            && TryParseHexColor(config.GradientColor[0], out var top)
            && TryParseHexColor(config.GradientColor[1], out var bottom))
        {
            titleText.SetVerticalGradient(top, bottom);
        }
        if (titleOutline != null && !string.IsNullOrWhiteSpace(config.OutlineColor)
            && TryParseHexColor(config.OutlineColor, out var outlineCol))
        {
            titleOutline.OutlineColor = outlineCol;
        }
    }
    private static bool TryParseHexColor(string hex, out Color color)
    {
        if (string.IsNullOrWhiteSpace(hex))
        {
            color = Color.white;
            return false;
        }
        if (hex[0] != '#') hex = "#" + hex;
        return UnityEngine.ColorUtility.TryParseHtmlString(hex, out color);
    }
    public bool IsFestivalActivityOpen()
    {
        if (!IsOpen) return false;
Main/System/FestivalActivity/FestivalActivityPopWin.cs
@@ -9,6 +9,9 @@
    [SerializeField] Toggle todayPopToggle;
    [SerializeField] ScrollerController scroller;
    [SerializeField] GradientText titleText;
    [SerializeField] OutlineEx titleOutline;
    FestivalActivityManager manager => FestivalActivityManager.Instance;
    protected override void InitComponent()
    {
@@ -38,6 +41,7 @@
    {
        scroller.OnRefreshCell += OnRefreshCell;
        todayPopToggle.isOn = !manager.IsTodayPop;
        manager.ApplyTitleStyle(titleText, titleOutline);
        DisplayTime();
        CreateScroller();
    }
Main/System/FestivalActivity/FestivalActivityShopWin.cs
@@ -6,6 +6,8 @@
    [SerializeField] ButtonEx closeButton;
    [SerializeField] TextEx timeText;
    [SerializeField] ScrollerController scroller;
    [SerializeField] GradientText titleText;
    [SerializeField] OutlineEx titleOutline;
    FestivalActivityMissionManager manager => FestivalActivityMissionManager.Instance;
    protected override void InitComponent()
    {
@@ -18,6 +20,7 @@
        StoreModel.Instance.RefreshShopEvent += CreateScroller;
        StoreModel.Instance.RefreshBuyShopLimitEvent += CreateScroller;
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        FestivalActivityManager.Instance.ApplyTitleStyle(titleText, titleOutline);
        if (!manager.IsShopVisitedToday)
        {
            manager.SaveShopVisitTimeData();
Main/System/FestivalActivity/FestivalActivityWin.cs
@@ -18,6 +18,9 @@
    [SerializeField] RedpointBehaviour giftRedpoint;
    [SerializeField] RedpointBehaviour rechargeRedpoint;
    [SerializeField] GradientText titleText;
    [SerializeField] OutlineEx titleOutline;
    FestivalActivityManager manager => FestivalActivityManager.Instance;
    protected override void InitComponent()
    {
@@ -32,6 +35,7 @@
    protected override void OnPreOpen()
    {
        InitRedpoint();
        manager.ApplyTitleStyle(titleText, titleOutline);
        GlobalTimeEvent.Instance.secondEvent += OnSecondEvent;
        RechargeManager.Instance.rechargeCountEvent += OnRechargeCountEvent;
Main/System/Main/HomeWin.cs
@@ -76,6 +76,8 @@
    [SerializeField] HeroReturnCell heroReturnCell;
    [SerializeField] HeroSkinFlashSaleCell heroSkinFlashSaleCell;
    [SerializeField] Button festivalActivityBtn;
    [SerializeField] GradientText festivalTitleText;
    [SerializeField] OutlineEx festivalTitleOutline;
    [SerializeField] Button superVIPBtn;
    //坐骑
@@ -1010,6 +1012,8 @@
    {
        bool isOpen = FestivalActivityManager.Instance.IsFestivalActivityOpen();
        festivalActivityBtn.SetActive(isOpen);
        if (isOpen)
            FestivalActivityManager.Instance.ApplyTitleStyle(festivalTitleText, festivalTitleOutline);
    }
    void DisplaySuperVipBtn()