From f448a4aff7c479db081175c9206913cc6dedf553 Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 09 十二月 2025 16:23:03 +0800
Subject: [PATCH] 0312 优化字符串拼接函数

---
 Main/Config/PartialConfigs/ChestsAwardConfig.cs                                             |    4 
 Main/System/Chat/ChatManager.cs                                                             |    6 
 Main/System/CustomizedGift/CustomizedGiftChooseWin.cs                                       |    2 
 Main/Utility/TimeUtility.cs                                                                 |   46 +++++-----
 Main/System/AssetVersion/DownLoadWin.cs                                                     |    4 
 Main/System/FirstCharge/FirstChargeHeroInfoWin.cs                                           |    2 
 Main/System/GeneralConfig/DayRemind.cs                                                      |    4 
 Main/System/Mail/MailWin.cs                                                                 |    6 
 Main/System/TianziBillborad/TianziBillboradAwardCell.cs                                     |    2 
 Main/System/Tip/PowerAddWin.cs                                                              |    2 
 Main/System/Redpoint/MainRedDot.cs                                                          |    4 
 Main/Utility/RunTimeABLoadLog.cs                                                            |    4 
 Main/System/Message/RichTableEvent.cs                                                       |    2 
 Main/Config/PartialConfigs/RichTextMsgReplaceConfig.cs                                      |    4 
 Main/System/ChallengeTab/ChallengeTabButton.cs                                              |    2 
 Main/Core/Frame/UIFrameMgr.cs                                                               |    2 
 Main/System/Store/StoreModel.cs                                                             |    2 
 Main/System/OSActivity/OSRankHeroCallAwardCell.cs                                           |    2 
 Main/Component/UI/Common/EnableButtonConfig.cs                                              |    2 
 Main/Core/NetworkPackage/NetPkgCtl.cs                                                       |    2 
 Main/Component/UI/Common/CoolDownBehaviour.cs                                               |    2 
 Main/Utility/EnumHelper.cs                                                                  |    1 
 Main/Core/GameEngine/Launch/BuiltInAssetCopyTask.cs                                         |    4 
 Main/System/FirstCharge/FirstChargeManager.cs                                               |    6 
 Main/System/AssetVersion/InGameDownLoadWin.cs                                               |    4 
 Main/System/OSActivity/OSActivityManager.cs                                                 |   36 +++++++++
 Main/System/Login/ServerListCenter.cs                                                       |    2 
 Main/System/PhantasmPavilion/AvatarHelper.cs                                                |    2 
 Main/Utility/UIHelper.cs                                                                    |   20 ++--
 Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs                                        |    1 
 Main/System/Launch/LaunchWin.cs                                                             |    6 
 Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs                            |    4 
 Main/System/Arena/ArenaAwardCell.cs                                                         |    2 
 Main/System/OpenServerActivity/OperationTimeHepler.cs                                       |    8 +-
 Main/System/Login/LoginManager.cs                                                           |    6 
 Main/System/PhantasmPavilion/PhantasmPavilionManager.DefaultID.cs                           |    2 
 Main/Core/NetworkPackage/DTCFile/ServerPack/HAB_Activity/DTCAB05_tagSCOSACelebrationInfo.cs |    7 +
 Main/System/AssetVersion/InGameDownLoadProgress.cs                                          |    4 
 Main/System/OSActivity/OSRankMainLeveAwardCell.cs                                           |    2 
 Main/Core/ResModule/ScriptableObjectLoader.cs                                               |    6 
 Main/System/HeroUI/HeroUIManager.cs                                                         |    4 
 Main/Utility/UIParamCopyTool.cs                                                             |    4 
 42 files changed, 139 insertions(+), 98 deletions(-)

diff --git a/Main/Component/UI/Common/CoolDownBehaviour.cs b/Main/Component/UI/Common/CoolDownBehaviour.cs
index e1a14e4..95fdd6e 100644
--- a/Main/Component/UI/Common/CoolDownBehaviour.cs
+++ b/Main/Component/UI/Common/CoolDownBehaviour.cs
@@ -56,7 +56,7 @@
                 {
                     timer = 1f;
                     var seconds = Mathf.RoundToInt(m_ButtonEx.ableTime - Time.realtimeSinceStartup);
-                    m_CoolDownText.text = StringUtility.Contact(seconds, Language.Get("RealmWin_Bewrite_35"));
+                    m_CoolDownText.text = StringUtility.Contact(seconds.ToString(), Language.Get("RealmWin_Bewrite_35"));
                 }
             }
             else
diff --git a/Main/Component/UI/Common/EnableButtonConfig.cs b/Main/Component/UI/Common/EnableButtonConfig.cs
index 20c8160..4c7bf9f 100644
--- a/Main/Component/UI/Common/EnableButtonConfig.cs
+++ b/Main/Component/UI/Common/EnableButtonConfig.cs
@@ -31,7 +31,7 @@
         {
             return dict[_type];
         }
-        var _cfg= BuiltInLoader.LoadScriptableObject<EnableButtonConfig>(StringUtility.Contact("EnableButton_", _type));
+        var _cfg= BuiltInLoader.LoadScriptableObject<EnableButtonConfig>(StringUtility.Contact("EnableButton_", _type.ToString()));
         dict.Add(_type, _cfg);
         return _cfg;
     }
diff --git a/Main/Config/PartialConfigs/ChestsAwardConfig.cs b/Main/Config/PartialConfigs/ChestsAwardConfig.cs
index 22d599b..f48e2e4 100644
--- a/Main/Config/PartialConfigs/ChestsAwardConfig.cs
+++ b/Main/Config/PartialConfigs/ChestsAwardConfig.cs
@@ -8,7 +8,7 @@
     
     protected override void OnConfigParseCompleted()
     {
-        string key = StringUtility.Contact(BoxID, BoxLV);
+        string key = $"{BoxID}{BoxLV}";
         if (!chestAwardDict.ContainsKey(key))
         {
             chestAwardDict.Add(key, this);
@@ -50,7 +50,7 @@
     private static ChestsAwardConfig GetChestsAwardByIDAndLv(int id, int lv)
     {
         ChestsAwardConfig chestsAwardConfig = null;
-        string key = StringUtility.Contact(id, lv);
+        string key = $"{id}{lv}";
         chestAwardDict.TryGetValue(key, out chestsAwardConfig);
         return chestsAwardConfig;
     }
diff --git a/Main/Config/PartialConfigs/RichTextMsgReplaceConfig.cs b/Main/Config/PartialConfigs/RichTextMsgReplaceConfig.cs
index 561e042..11cb7b4 100644
--- a/Main/Config/PartialConfigs/RichTextMsgReplaceConfig.cs
+++ b/Main/Config/PartialConfigs/RichTextMsgReplaceConfig.cs
@@ -8,13 +8,13 @@
 
     protected override void OnConfigParseCompleted()
     {
-        m_ReplaceCfgs.Add(StringUtility.Contact(Identification, Number).ToString(), this);
+        m_ReplaceCfgs.Add(StringUtility.Contact(Identification, Number.ToString()), this);
     }
 
     public static string GetRichReplace(string identify, int number)
     {
         RichTextMsgReplaceConfig replace = null;
-        m_ReplaceCfgs.TryGetValue(StringUtility.Contact(identify, number).ToString(), out replace);
+        m_ReplaceCfgs.TryGetValue(StringUtility.Contact(identify, number.ToString()), out replace);
         if (replace != null)
         {
             return replace.Content;
diff --git a/Main/Core/Frame/UIFrameMgr.cs b/Main/Core/Frame/UIFrameMgr.cs
index 7a193e3..34d5837 100644
--- a/Main/Core/Frame/UIFrameMgr.cs
+++ b/Main/Core/Frame/UIFrameMgr.cs
@@ -57,7 +57,7 @@
         for (int i = 1; i <= cfg.frameCnt; i++)
         {
             string spritePath = "Sprite/" + cfg.folder;
-            string spriteName = StringUtility.Contact(cfg.name, "_", i);
+            string spriteName = StringUtility.Contact(cfg.name, "_", i.ToString());
             
             Sprite sprite = ResManager.Instance.LoadAsset<Sprite>(spritePath, spriteName);
             if (sprite != null)
diff --git a/Main/Core/GameEngine/Launch/BuiltInAssetCopyTask.cs b/Main/Core/GameEngine/Launch/BuiltInAssetCopyTask.cs
index e64ab7a..4ace76f 100644
--- a/Main/Core/GameEngine/Launch/BuiltInAssetCopyTask.cs
+++ b/Main/Core/GameEngine/Launch/BuiltInAssetCopyTask.cs
@@ -185,7 +185,7 @@
                 foreach (var file in configFiles)
                 {
                     var name = Path.GetFileName(file.FullName);
-                    fileNames.Add(StringUtility.Contact("config", Path.DirectorySeparatorChar, name));
+                    fileNames.Add(StringUtility.Contact("config", Path.DirectorySeparatorChar.ToString(), name));
                 }
 
                 foreach (var item in fileNames)
@@ -232,7 +232,7 @@
         foreach (var file in configFiles)
         {
             var name = Path.GetFileName(file.FullName);
-            fileNames.Add(StringUtility.Contact("config", Path.DirectorySeparatorChar, name));
+            fileNames.Add(StringUtility.Contact("config", Path.DirectorySeparatorChar.ToString(), name));
         }
 
         foreach (var item in fileNames)
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAB_Activity/DTCAB05_tagSCOSACelebrationInfo.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAB_Activity/DTCAB05_tagSCOSACelebrationInfo.cs
index 6715c77..17e8297 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/HAB_Activity/DTCAB05_tagSCOSACelebrationInfo.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/HAB_Activity/DTCAB05_tagSCOSACelebrationInfo.cs
@@ -1,11 +1,12 @@
-using UnityEngine;
-using System.Collections;
-
+using UnityEngine;
+using System.Collections;
+
 // AB 05 寮�鏈嶅簡鍏镐俊鎭� #tagSCOSACelebrationInfo
 
 public class DTCAB05_tagSCOSACelebrationInfo : DtcBasic {
     public override void Done(GameNetPackBasic vNetPack) {
         base.Done(vNetPack);
         HAB05_tagSCOSACelebrationInfo vNetData = vNetPack as HAB05_tagSCOSACelebrationInfo;
+        OSActivityManager.Instance.UpdateOSGalaData(vNetData);
     }
 }
diff --git a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
index 1c12966..b3f7191 100644
--- a/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
+++ b/Main/Core/NetworkPackage/DataToCtl/PackageRegedit.cs
@@ -134,6 +134,7 @@
         Register(typeof(HB311_tagMCTalkCacheList), typeof(DTCB311_tagMCTalkCacheList));
         Register(typeof(HA319_tagMCPackDownloadRecord), typeof(DTCA319_tagMCPackDownloadRecord));
         Register(typeof(HB129_tagSCLineupRecommendInfo), typeof(DTCB129_tagSCLineupRecommendInfo));
+        Register(typeof(HAB05_tagSCOSACelebrationInfo), typeof(DTCAB05_tagSCOSACelebrationInfo));
     }
 
     //涓诲伐绋嬫敞鍐屽皝鍖�
diff --git a/Main/Core/NetworkPackage/NetPkgCtl.cs b/Main/Core/NetworkPackage/NetPkgCtl.cs
index 443cb13..fb19e74 100644
--- a/Main/Core/NetworkPackage/NetPkgCtl.cs
+++ b/Main/Core/NetworkPackage/NetPkgCtl.cs
@@ -72,7 +72,7 @@
 
                 var package = packages[i];
                 var line = string.Empty;
-                line = StringUtility.Contact(package.type == NetPackagetType.Client ? "銆愬彂閫併�慭t" : "銆愭帴鏀躲�慭t", package.time, ":", package.name, @details ? "\r\n" : "-->" + package.fields);
+                line = StringUtility.Concat(package.type == NetPackagetType.Client ? "銆愬彂閫併�慭t" : "銆愭帴鏀躲�慭t", package.time, ":", package.name, @details ? "\r\n" : "-->" + package.fields);
 
                 if (@details && package.fieldDetails != null)
                 {
diff --git a/Main/Core/ResModule/ScriptableObjectLoader.cs b/Main/Core/ResModule/ScriptableObjectLoader.cs
index 72900fa..bb9ea76 100644
--- a/Main/Core/ResModule/ScriptableObjectLoader.cs
+++ b/Main/Core/ResModule/ScriptableObjectLoader.cs
@@ -20,10 +20,10 @@
         if (!AssetSource.isUseAssetBundle)
         {
 #if UNITY_EDITOR
-            var resourcePath = StringUtility.Contact(ResourcesPath.ResourcesOutAssetPath,
+            var resourcePath = StringUtility.Concat(ResourcesPath.ResourcesOutAssetPath,
                                                    "ScriptableObject/NewBieGuide/",
                                                    SoNewBieGuide_Suffix,
-                                                   _id,
+                                                   _id.ToString(),
                                                    ".asset");
 
             config = AssetDatabase.LoadAssetAtPath<NewBieGuideScriptableObject>(resourcePath);
@@ -31,7 +31,7 @@
         }
         else
         {
-            var assetName = StringUtility.Contact(SoNewBieGuide_Suffix, _id);
+            var assetName = StringUtility.Contact(SoNewBieGuide_Suffix, _id.ToString());
             var assetInfo = new AssetInfo(bundleName, assetName);
             config = AssetBundleUtility.Instance.Sync_LoadAsset(assetInfo) as NewBieGuideScriptableObject;
         }
diff --git a/Main/System/Arena/ArenaAwardCell.cs b/Main/System/Arena/ArenaAwardCell.cs
index d95196d..08db90e 100644
--- a/Main/System/Arena/ArenaAwardCell.cs
+++ b/Main/System/Arena/ArenaAwardCell.cs
@@ -23,7 +23,7 @@
         {
             imgRank.SetActive(true);
             txtRank.SetActive(false);
-            imgRank.SetSprite(StringUtility.Contact("Rank", rank));
+            imgRank.SetSprite($"Rank{rank}");
             txtRank.text = rank.ToString();
         }
         else
diff --git a/Main/System/AssetVersion/DownLoadWin.cs b/Main/System/AssetVersion/DownLoadWin.cs
index f9f444e..620b8e1 100644
--- a/Main/System/AssetVersion/DownLoadWin.cs
+++ b/Main/System/AssetVersion/DownLoadWin.cs
@@ -86,11 +86,11 @@
                 var downLoadedSize = Mathf.Clamp(DownloadHotMgr.Instance.DownloadedBytes, 0, DownLoadAndDiscompressHotTask.Instance.totalSize - 1);
                 var downLoadedSizeString = ((float)downLoadedSize / DownLoadAndDiscompressHotTask.BYTE_PER_MILLIONBYTE).ToString("f1");
 
-                m_Progress.text = Language.GetFromLocal(13, StringUtility.Contact(downLoadedSizeString, "M", "/", totalSizeString, "M"));
+                m_Progress.text = Language.GetFromLocal(13, StringUtility.Concat(downLoadedSizeString, "M", "/", totalSizeString, "M"));
 
                 if (downLoadedSize >= DownLoadAndDiscompressHotTask.Instance.totalSize)
                 {
-                    m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10), "KB/S");
+                    m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10).ToString(), "KB/S");
                 }
                 else
                 {
diff --git a/Main/System/AssetVersion/InGameDownLoadProgress.cs b/Main/System/AssetVersion/InGameDownLoadProgress.cs
index 884fb7e..06535cb 100644
--- a/Main/System/AssetVersion/InGameDownLoadProgress.cs
+++ b/Main/System/AssetVersion/InGameDownLoadProgress.cs
@@ -32,7 +32,7 @@
             else
             {
                 var progress = Mathf.RoundToInt(InGameDownLoad.Instance.progress * 100);
-                m_ProgressText.text = StringUtility.Contact(progress, "%");
+                m_ProgressText.text = StringUtility.Contact(progress.ToString(), "%");
             }
         }
         else
@@ -113,7 +113,7 @@
             else
             {
                 var progress = Mathf.RoundToInt(InGameDownLoad.Instance.progress * 100);
-                m_ProgressText.text = StringUtility.Contact(Mathf.Clamp(progress, 0, 99), "%");
+                m_ProgressText.text = StringUtility.Contact(Mathf.Clamp(progress, 0, 99).ToString(), "%");
             }
         }
     }
diff --git a/Main/System/AssetVersion/InGameDownLoadWin.cs b/Main/System/AssetVersion/InGameDownLoadWin.cs
index 0c6fc46..6887459 100644
--- a/Main/System/AssetVersion/InGameDownLoadWin.cs
+++ b/Main/System/AssetVersion/InGameDownLoadWin.cs
@@ -119,11 +119,11 @@
                 var totalSizeString = ((float)InGameDownLoad.Instance.showTotalSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
                 var downLoadedSize = Mathf.Clamp(InGameDownLoad.Instance.showDownLoadedSize, 0, InGameDownLoad.Instance.showTotalSize - 1);
                 var downLoadedSizeString = ((float)downLoadedSize / InGameDownLoad.BYTE_PER_MILLIONBYTE).ToString("f1");
-                m_Progress.text = Language.GetFromLocal(13, StringUtility.Contact(downLoadedSizeString, "M", "/", totalSizeString, "M"));
+                m_Progress.text = Language.GetFromLocal(13, StringUtility.Concat(downLoadedSizeString, "M", "/", totalSizeString, "M"));
 
                 if (InGameDownLoad.Instance.showDownLoadedSize >= InGameDownLoad.Instance.showTotalSize)
                 {
-                    m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10), "KB/S");
+                    m_DownLoadSpeed.text = StringUtility.Contact(UnityEngine.Random.Range(5, 10).ToString(), "KB/S");
                 }
                 else
                 {
diff --git a/Main/System/ChallengeTab/ChallengeTabButton.cs b/Main/System/ChallengeTab/ChallengeTabButton.cs
index 6e18117..e007215 100644
--- a/Main/System/ChallengeTab/ChallengeTabButton.cs
+++ b/Main/System/ChallengeTab/ChallengeTabButton.cs
@@ -68,7 +68,7 @@
         txtLockInfo.SetActive(!isOpen);
 
         // 璁剧疆鍥炬爣鍜屽悕绉�
-        string spriteAndLangKey = StringUtility.Contact("ChallengeTab", data.Index);
+        string spriteAndLangKey = StringUtility.Contact("ChallengeTab", data.Index.ToString());
         imgIcon.SetSprite(spriteAndLangKey);
         txtName.text = Language.Get(spriteAndLangKey);
 
diff --git a/Main/System/Chat/ChatManager.cs b/Main/System/Chat/ChatManager.cs
index 5d12a44..376dbf9 100644
--- a/Main/System/Chat/ChatManager.cs
+++ b/Main/System/Chat/ChatManager.cs
@@ -534,19 +534,19 @@
 
     public string GetChatTabName(ChatTab chatTab)
     {
-        return Language.Get(StringUtility.Contact("ChatTab", (int)chatTab));
+        return Language.Get(StringUtility.Contact("ChatTab", ((int)chatTab).ToString()));
     }
 
     public string GetChatTabSelectIcon(ChatTab chatTab, bool isSelect)
     {
-        return StringUtility.Contact(isSelect ? "ChatTabSelect" : "ChatTabUnSelect", (int)chatTab);
+        return StringUtility.Contact(isSelect ? "ChatTabSelect" : "ChatTabUnSelect", ((int)chatTab).ToString());
     }
     #endregion
     #region 寮瑰箷璁剧疆
 
     private Dictionary<ChatChannel, bool> bulletSettingDict = new Dictionary<ChatChannel, bool>();
 
-    private string settingsKey { get { return StringUtility.Contact("BulletChatSettings_", PlayerDatas.Instance.PlayerId); } }
+    private string settingsKey { get { return StringUtility.Contact("BulletChatSettings_", PlayerDatas.Instance.PlayerId.ToString()); } }
 
     // 璁剧疆鐗瑰畾棰戦亾鐨勫脊骞曞紑鍏崇姸鎬�
     public void SetBulletSetting(ChatChannel channelType, bool isEnabled)
diff --git a/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs b/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs
index d8e64d2..08a975b 100644
--- a/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs
+++ b/Main/System/CustomizedGift/CustomizedGiftChooseWin.cs
@@ -142,7 +142,7 @@
         {
             txtTitle.SetActive(true);
             txtInfo.SetActive(true);
-            txtTitle.text = StringUtility.Contact(ItemConfig.Get(selectItemID).ItemName, " x", selectIemCount);
+            txtTitle.text = StringUtility.Contact(ItemConfig.Get(selectItemID).ItemName, " x", selectIemCount.ToString());
             txtInfo.text = ItemConfig.Get(selectItemID).Description;
         }
         else
diff --git a/Main/System/FirstCharge/FirstChargeHeroInfoWin.cs b/Main/System/FirstCharge/FirstChargeHeroInfoWin.cs
index dd2622f..22252ac 100644
--- a/Main/System/FirstCharge/FirstChargeHeroInfoWin.cs
+++ b/Main/System/FirstCharge/FirstChargeHeroInfoWin.cs
@@ -59,7 +59,7 @@
         itemCell.Init(new ItemCellModel((int)FirstChargeManager.Instance.heroItemID, true, 1));
         txtName.text = Language.Get("FirstCharge09", Language.Get("CommonQuality" + heroInfo.Quality),heroInfo.heroConfig.Name); 
         txtName.color = UIHelper.GetUIColorByFunc(heroInfo.Quality);
-        txtJob.text = Language.Get("FirstCharge06",Language.Get(StringUtility.Contact("HeroClass",heroInfo.heroConfig.Class)));
+        txtJob.text = Language.Get("FirstCharge06",Language.Get(StringUtility.Contact("HeroClass",heroInfo.heroConfig.Class.ToString())));
         txtDesc.text = Language.Get("FirstCharge07",heroInfo.heroConfig.Desc);
     }
     
diff --git a/Main/System/FirstCharge/FirstChargeManager.cs b/Main/System/FirstCharge/FirstChargeManager.cs
index c647081..a9e441d 100644
--- a/Main/System/FirstCharge/FirstChargeManager.cs
+++ b/Main/System/FirstCharge/FirstChargeManager.cs
@@ -156,12 +156,12 @@
 
     public bool GetLocalFail()
     {
-        return LocalSave.GetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId));
+        return LocalSave.GetBool(StringUtility.Concat(loaclKey + PlayerDatas.Instance.PlayerId));
     }
 
     public void SetLocalFail()
     {
-        LocalSave.SetBool(StringUtility.Contact(loaclKey + PlayerDatas.Instance.PlayerId), true);
+        LocalSave.SetBool(StringUtility.Concat(loaclKey + PlayerDatas.Instance.PlayerId), true);
     }
 
     public bool IsFuncOpen()
@@ -329,7 +329,7 @@
         OnUpdateFirstChargeInfo?.Invoke();
     }
 
-    public string key { get { return StringUtility.Contact("FirstCharge_AllRewardsClaimed_Time_", PlayerDatas.Instance.baseData.PlayerID); } }
+    public string key { get { return StringUtility.Contact("FirstCharge_AllRewardsClaimed_Time_", PlayerDatas.Instance.baseData.PlayerID.ToString()); } }
 
     /// <summary>
     /// 妫�鏌ユ槸鍚︽墍鏈夐鍏呭鍔遍兘宸查鍙栵紝濡傛灉鏄紝鍒欏皢褰撳墠鏈嶅姟鍣ㄦ椂闂翠繚瀛樺埌鏈湴
diff --git a/Main/System/GeneralConfig/DayRemind.cs b/Main/System/GeneralConfig/DayRemind.cs
index a1debbd..7667136 100644
--- a/Main/System/GeneralConfig/DayRemind.cs
+++ b/Main/System/GeneralConfig/DayRemind.cs
@@ -69,7 +69,7 @@
         intarray[0] = TimeUtility.ServerNow.Month;
         intarray[1] = TimeUtility.ServerNow.Day;
         intarray[2] = _remind ? 1 : 0;
-        LocalSave.SetIntArray(StringUtility.Contact(_remindKey, PlayerDatas.Instance.baseData.PlayerID), intarray);
+        LocalSave.SetIntArray(StringUtility.Contact(_remindKey, PlayerDatas.Instance.baseData.PlayerID.ToString()), intarray);
     }
 
     private void GetPlayerDayRemind()
@@ -80,7 +80,7 @@
 
     public void SetDayRemind(string _key)
     {
-        var intarray = LocalSave.GetIntArray(StringUtility.Contact(_key, PlayerDatas.Instance.baseData.PlayerID));
+        var intarray = LocalSave.GetIntArray(StringUtility.Contact(_key, PlayerDatas.Instance.baseData.PlayerID.ToString()));
         if (dayRemindDic.ContainsKey(_key))
         {
             dayRemindDic[_key] = intarray;
diff --git a/Main/System/HeroUI/HeroUIManager.cs b/Main/System/HeroUI/HeroUIManager.cs
index 5f556fc..1992e38 100644
--- a/Main/System/HeroUI/HeroUIManager.cs
+++ b/Main/System/HeroUI/HeroUIManager.cs
@@ -168,12 +168,12 @@
 
     public string GetCountryIconName(int index)
     {
-        return StringUtility.Contact("herocountry", index);
+        return StringUtility.Contact("herocountry", index.ToString());
     }
 
     public string GetJobIconName(int index)
     {
-        return StringUtility.Contact("herojob", index);
+        return StringUtility.Contact("herojob", index.ToString());
     }
 
     public int GetMaxLV(int quality)
diff --git a/Main/System/Launch/LaunchWin.cs b/Main/System/Launch/LaunchWin.cs
index efad36f..871de6c 100644
--- a/Main/System/Launch/LaunchWin.cs
+++ b/Main/System/Launch/LaunchWin.cs
@@ -151,9 +151,9 @@
                 case LaunchStage.SDKInit:
                     return Language.GetFromLocal(36);
                 case LaunchStage.AssetCopy:
-                    return StringUtility.Contact(Language.GetFromLocal(37), "(", step, ")");
+                    return StringUtility.Contact(Language.GetFromLocal(37), "(", step.ToString(), ")");
                 case LaunchStage.AssetDecompress:
-                    return StringUtility.Contact(Language.GetFromLocal(38), "(", step, ")");
+                    return StringUtility.Contact(Language.GetFromLocal(38), "(", step.ToString(), ")");
                 case LaunchStage.ClientVersion:
                     return Language.GetFromLocal(39);
                 case LaunchStage.CheckAsset:
@@ -163,7 +163,7 @@
                 case LaunchStage.AssetBundleInit:
                     return Language.GetFromLocal(42);
                 case LaunchStage.ConfigInit:
-                    return StringUtility.Contact(Language.GetFromLocal(43), "(", step, ")");
+                    return StringUtility.Contact(Language.GetFromLocal(43), "(", step.ToString(), ")");
                 case LaunchStage.Complete:
                     return Language.GetFromLocal(44);
                 default:
diff --git a/Main/System/Login/LoginManager.cs b/Main/System/Login/LoginManager.cs
index 2aded75..a51c094 100644
--- a/Main/System/Login/LoginManager.cs
+++ b/Main/System/Login/LoginManager.cs
@@ -331,9 +331,9 @@
             {
                 var deviceInfo = DeviceUtility.GetDeviceModel();
                 deviceInfo.Replace(" ", "").Replace("=", "").Replace("%", "").Replace("-", "").Replace("|", "");
-                var versionStr = StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", deviceInfo);
+                var versionStr = StringUtility.Concat(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex.ToString(), "_", deviceInfo);
 
-                send.Extra = StringUtility.Contact(VersionConfig.Get().SpID, "|",
+                send.Extra = StringUtility.Concat(VersionConfig.Get().SpID, "|",
                                                     SDKUtils.Instance.Device.uniqueID, "|",
                                                     sdkLoginResult.token, "|",
                                                     sdkLoginResult.qkUserName, "|",
@@ -375,6 +375,6 @@
 
     public string GetVersionStr()
     {
-        return StringUtility.Contact(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex, "_", InitialFunctionConfig.Get("version").Numerical1);
+        return StringUtility.Concat(VersionConfig.Get().version, "_", VersionConfig.Get().buildIndex.ToString(), "_", InitialFunctionConfig.Get("version").Numerical1);
     }
 }
diff --git a/Main/System/Login/ServerListCenter.cs b/Main/System/Login/ServerListCenter.cs
index 5678479..fc6e548 100644
--- a/Main/System/Login/ServerListCenter.cs
+++ b/Main/System/Login/ServerListCenter.cs
@@ -199,7 +199,7 @@
             return;
         }
 
-        var url = StringUtility.Contact(JUMP_URL[0], "game=xssg&flag=", VersionConfig.Get().appId, "_", VersionConfig.Get().branch, "_", VersionConfig.Get().version);
+        var url = StringUtility.Concat(JUMP_URL[0], "game=xssg&flag=", VersionConfig.Get().appId, "_", VersionConfig.Get().branch.ToString(), "_", VersionConfig.Get().version);
         jumpUrlIndex++;
         serverUrl = url;
         Debug.Log("http鍦板潃:serverlist  " + url);
diff --git a/Main/System/Mail/MailWin.cs b/Main/System/Mail/MailWin.cs
index 67475c9..4a8a70d 100644
--- a/Main/System/Mail/MailWin.cs
+++ b/Main/System/Mail/MailWin.cs
@@ -49,7 +49,7 @@
     {
         scrMail.m_Scorller.RefreshActiveCellViews();
         int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal);
-        txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount);
+        txtCurrentMailCount.text = StringUtility.Contact(personalMailCount.ToString(), "/", MailManager.Instance.personalMailMaxLimitCount.ToString());
     }
 
     protected override void OpenSubUIByTabIndex()
@@ -62,7 +62,7 @@
                 btnClaimAll.SetActive(true);
                 transCurrentMailCount.SetActive(true);
                 int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal);
-                txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount);
+                txtCurrentMailCount.text = StringUtility.Contact(personalMailCount.ToString(), "/", MailManager.Instance.personalMailMaxLimitCount.ToString());
                 DisPlay();
                 break;
             case 1:
@@ -148,7 +148,7 @@
             scrMail.Restart();
         }
         int personalMailCount = MailManager.Instance.GetMailCount(MailCategory.Personal);
-        txtCurrentMailCount.text = StringUtility.Contact(personalMailCount, "/", MailManager.Instance.personalMailMaxLimitCount);
+        txtCurrentMailCount.text = StringUtility.Contact(personalMailCount.ToString(), "/", MailManager.Instance.personalMailMaxLimitCount.ToString());
     }
 
 
diff --git a/Main/System/Message/RichTableEvent.cs b/Main/System/Message/RichTableEvent.cs
index ed93f1d..af0aadc 100644
--- a/Main/System/Message/RichTableEvent.cs
+++ b/Main/System/Message/RichTableEvent.cs
@@ -77,7 +77,7 @@
                                                 int.TryParse(_dict["count"], out count);
                                                 if (count > 0)
                                                 {
-                                                    itemName = StringUtility.Contact(itemName, "x", count);
+                                                    itemName = StringUtility.Contact(itemName, "x", count.ToString());
                                                 }
                                             }
                                             var suitLabel = string.Empty;
diff --git a/Main/System/OSActivity/OSActivityManager.cs b/Main/System/OSActivity/OSActivityManager.cs
index 3c24867..38faf81 100644
--- a/Main/System/OSActivity/OSActivityManager.cs
+++ b/Main/System/OSActivity/OSActivityManager.cs
@@ -13,11 +13,14 @@
 
     public List<int> osHeroCallGiftSortList = new List<int>();    //寮�鏈嶆嫑鍕熺ぜ鍖� 鍏呭�糏D + 100000000
 
+    //寮�鏈嶆瀵瑰簲鐨勫姛鑳絀D
     Dictionary<int, int> rankTypeToFuncID = new Dictionary<int, int>()
     {
         {3, 45},
         {4, 46},
     };
+
+
 
     public override void Init()
     {
@@ -38,6 +41,8 @@
 
     void BeforePlayerDataInitialize()
     {
+        osGalaScore = 0; //褰撳墠绉垎 绱鐨勶紱娑堣�楃殑鏄揣甯�55
+        osGalaAwardState = 0; //鎸変綅璁板綍鏄惁棰嗗彇
     }
 
     void ParseConfig()
@@ -60,6 +65,9 @@
             osHeroCallGiftSortList.Add(_list[i] + 100000000);
         }
 
+        config = FuncConfigConfig.Get("OSACelebration");
+        osGalaOpenDays = int.Parse(config.Numerical1);
+        osGalaScoreAwards = ConfigParse.ParseIntArray2Dict(config.Numerical2);
     }
 
     // 寮�鏈嶆帓琛屾椿鍔ㄦ槸鍚﹀紑鍚�
@@ -187,4 +195,32 @@
                 break;
         }
     }
+
+    #region 寮�鏈嶅簡鍏�
+    //寮�鏈嶅簡鍏�
+    public int osGalaOpenDays = 0; //鎸佺画澶╂暟
+    public Dictionary<int, int[][]> osGalaScoreAwards = new Dictionary<int, int[][]>();  // 寮�鏈嶅簡鍏哥Н鍒嗗鍔�
+
+    public int osGalaScore = 0; //褰撳墠绉垎 绱鐨勶紱娑堣�楃殑鏄揣甯�55
+    public int osGalaAwardState = 0; //鎸変綅璁板綍鏄惁棰嗗彇
+    public event Action OnOSGalaDataChangeEvent;
+    public void UpdateOSGalaData(HAB05_tagSCOSACelebrationInfo netPack)
+    {
+        osGalaScore = (int)netPack.PointTotal;
+        osGalaAwardState = (int)netPack.PointAward;
+        OnOSGalaDataChangeEvent?.Invoke();
+    }
+
+    public bool IsOpenedOSGala()
+    {
+        if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.OSGala))
+        {
+            return false;
+        }
+        //缁撴潫鍚庡欢杩熶竴澶╁叧闂睍绀�
+        return TimeUtility.OpenDay <= osGalaOpenDays;
+    }
+
+
+    #endregion
 }
diff --git a/Main/System/OSActivity/OSRankHeroCallAwardCell.cs b/Main/System/OSActivity/OSRankHeroCallAwardCell.cs
index bef253b..c096521 100644
--- a/Main/System/OSActivity/OSRankHeroCallAwardCell.cs
+++ b/Main/System/OSActivity/OSRankHeroCallAwardCell.cs
@@ -16,7 +16,7 @@
         {
             rankImg.SetActive(true);
             rankText.SetActive(false);
-            rankImg.SetSprite(StringUtility.Contact("Rank", index + 1));
+            rankImg.SetSprite($"Rank{index + 1}");
         }
         else
         {
diff --git a/Main/System/OSActivity/OSRankMainLeveAwardCell.cs b/Main/System/OSActivity/OSRankMainLeveAwardCell.cs
index f367c7f..3ebd67d 100644
--- a/Main/System/OSActivity/OSRankMainLeveAwardCell.cs
+++ b/Main/System/OSActivity/OSRankMainLeveAwardCell.cs
@@ -16,7 +16,7 @@
         {
             rankImg.SetActive(true);
             rankText.SetActive(false);
-            rankImg.SetSprite(StringUtility.Contact("Rank", index + 1));
+            rankImg.SetSprite($"Rank{index + 1}");
         }
         else
         {
diff --git a/Main/System/OpenServerActivity/OperationTimeHepler.cs b/Main/System/OpenServerActivity/OperationTimeHepler.cs
index bd6219d..288e28c 100644
--- a/Main/System/OpenServerActivity/OperationTimeHepler.cs
+++ b/Main/System/OpenServerActivity/OperationTimeHepler.cs
@@ -853,7 +853,7 @@
             }
             else if (!operation.SatisfyOpenCondition())
             {
-                SysNotifyMgr.Instance.ShowTip(StringUtility.Contact("OperationLevelLimit_", type), operation.limitLv);
+                SysNotifyMgr.Instance.ShowTip(StringUtility.Contact("OperationLevelLimit_", type.ToString()), operation.limitLv);
             }
         }
         else
@@ -987,10 +987,10 @@
     {
         if (showYear)
         {
-            return StringUtility.Contact(year, "/", month, "/", day);
+            return $"{year}/{month}/{day}";
         }
+        return $"{month}/{day}";
 
-        return StringUtility.Contact(month, "/", day);
 
         //var yearString = StringUtility.Contact(year, Language.Get("Year"));
         //return StringUtility.Contact(showYear ? yearString : string.Empty, month, Language.Get("Month"), day, Language.Get("Day"));
@@ -1032,7 +1032,7 @@
 
     public override string ToString()
     {
-        return StringUtility.Contact(startHour.ToString("D2"), ":", startMinute.ToString("D2"),
+        return StringUtility.Concat(startHour.ToString("D2"), ":", startMinute.ToString("D2"),
             "-", endHour.ToString("D2"), ":", endMinute.ToString("D2"));
     }
 
diff --git a/Main/System/PhantasmPavilion/AvatarHelper.cs b/Main/System/PhantasmPavilion/AvatarHelper.cs
index 68fb411..abd9b22 100644
--- a/Main/System/PhantasmPavilion/AvatarHelper.cs
+++ b/Main/System/PhantasmPavilion/AvatarHelper.cs
@@ -79,6 +79,6 @@
     public static string GetAvatarBgColorStr(int faceID)
     {
         int bgColor = GetAvatarBgColor(faceID);
-        return StringUtility.Contact("AvatarBgColor", bgColor);
+        return StringUtility.Contact("AvatarBgColor", bgColor.ToString());
     }
 }
\ No newline at end of file
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionManager.DefaultID.cs b/Main/System/PhantasmPavilion/PhantasmPavilionManager.DefaultID.cs
index bcb3b6d..3a72993 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionManager.DefaultID.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionManager.DefaultID.cs
@@ -148,6 +148,6 @@
     public string GetModelBgColorStr(int id)
     {
         int bgColor = GetModelBgColor(id);
-        return StringUtility.Contact("ModelBgColor", bgColor);
+        return StringUtility.Contact("ModelBgColor", bgColor.ToString());
     }
 }
\ No newline at end of file
diff --git a/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs b/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs
index 5475be0..ddb6a19 100644
--- a/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs
+++ b/Main/System/PhantasmPavilion/PhantasmPavilionManager.Redpoint.cs
@@ -225,8 +225,8 @@
 
     }
 
-    string modelkey { get { return StringUtility.Contact("PhantasmPavilion_Redponit_Model_", PlayerDatas.Instance.PlayerId); } }
-    string facekey { get { return StringUtility.Contact("PhantasmPavilion_Redponit_Face_", PlayerDatas.Instance.PlayerId); } }
+    string modelkey { get { return StringUtility.Contact("PhantasmPavilion_Redponit_Model_", PlayerDatas.Instance.PlayerId.ToString()); } }
+    string facekey { get { return StringUtility.Contact("PhantasmPavilion_Redponit_Face_", PlayerDatas.Instance.PlayerId.ToString()); } }
     public void SaveLocal()
     {
         LocalSave.SetIntArray(modelkey, newHeroIDModelList.ToArray());
diff --git a/Main/System/Redpoint/MainRedDot.cs b/Main/System/Redpoint/MainRedDot.cs
index b3d9398..124a859 100644
--- a/Main/System/Redpoint/MainRedDot.cs
+++ b/Main/System/Redpoint/MainRedDot.cs
@@ -70,8 +70,10 @@
     //鑷姩鎴樻枟
     public const int RedPoint_AutoBattleKey = 110;
     Redpoint autoBattleRedpoint = new Redpoint(RedPoint_AutoBattleKey);
-    public const int RedPoint_OSMainLevel = 111;
+    public const int RedPoint_OSMainLevel = 111;    //寮�鏈嶆
     public const int RedPoint_OSHeroCard = 112;
+    public const int RedPoint_OSGala = 113; //寮�鏈嶅簡鍏�
+
     public const int RedPoint_Download = 116;
 
     //姝﹀皢鍗�
diff --git a/Main/System/Store/StoreModel.cs b/Main/System/Store/StoreModel.cs
index 35e8337..071d77b 100644
--- a/Main/System/Store/StoreModel.cs
+++ b/Main/System/Store/StoreModel.cs
@@ -557,7 +557,7 @@
         int state = GetShopIDState(shopID);
         if (state == 1 || state == 3)
         {
-            SysNotifyMgr.Instance.ShowTip(StringUtility.Contact("StoreTip", state));
+            SysNotifyMgr.Instance.ShowTip(StringUtility.Contact("StoreTip", state.ToString()));
             return false;
         }
         return true;
diff --git a/Main/System/TianziBillborad/TianziBillboradAwardCell.cs b/Main/System/TianziBillborad/TianziBillboradAwardCell.cs
index 85fc3f5..232c26a 100644
--- a/Main/System/TianziBillborad/TianziBillboradAwardCell.cs
+++ b/Main/System/TianziBillborad/TianziBillboradAwardCell.cs
@@ -23,7 +23,7 @@
         {
             imgRank.SetActive(true);
             txtRank.SetActive(false);
-            imgRank.SetSprite(StringUtility.Contact("Rank", rank));
+            imgRank.SetSprite(StringUtility.Contact("Rank", rank.ToString()));
             txtRank.text = rank.ToString();
         }
         else
diff --git a/Main/System/Tip/PowerAddWin.cs b/Main/System/Tip/PowerAddWin.cs
index 3bd2e58..08c7f81 100644
--- a/Main/System/Tip/PowerAddWin.cs
+++ b/Main/System/Tip/PowerAddWin.cs
@@ -269,7 +269,7 @@
 
     private string DisplayState(bool isAdd)
     {
-        return StringUtility.Contact(isAdd ? "FightPointUP" : "FightPointDown");
+        return StringUtility.Concat(isAdd ? "FightPointUP" : "FightPointDown");
     }
 
     private string DisplayBasePowerNum(long basePower)
diff --git a/Main/Utility/EnumHelper.cs b/Main/Utility/EnumHelper.cs
index 2a51539..2ac80e5 100644
--- a/Main/Utility/EnumHelper.cs
+++ b/Main/Utility/EnumHelper.cs
@@ -839,6 +839,7 @@
     LLMJ = 41,  //鍘嗙粌绉樼瑘
     OSMainLevl = 45, //寮�鏈嶅叧鍗℃娲诲姩
     OSHeroCall = 46, //寮�鏈嶆灏嗗彫鍞ゆ娲诲姩
+    OSGala = 47, //寮�鏈嶇洓鍏告椿鍔�
     FunctionPreview = 48, //鍔熻兘棰勮
 }
 
diff --git a/Main/Utility/RunTimeABLoadLog.cs b/Main/Utility/RunTimeABLoadLog.cs
index a6c033d..ae4e675 100644
--- a/Main/Utility/RunTimeABLoadLog.cs
+++ b/Main/Utility/RunTimeABLoadLog.cs
@@ -12,14 +12,14 @@
 
     public static void AddLog(string _abName, string _asset, string _scene)
     {
-        var log = StringUtility.Contact(_scene, "\t", _abName, "\t", _asset, "\t", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
+        var log = StringUtility.Concat(_scene, "\t", _abName, "\t", _asset, "\t", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"));
         assetBundleLoadLogs.Add(log);
     }
 
     [MenuItem("绋嬪簭/鎵撳嵃璧勬簮鍖呭姞杞芥棩蹇�")]
     public static void Print()
     {
-        var tile = StringUtility.Contact("鍦烘櫙鍚�", "\t", "璧勬簮鍖呭悕", "\t", "璧勬簮鍚�", "\t", "鏃堕棿");
+        var tile = StringUtility.Concat("鍦烘櫙鍚�", "\t", "璧勬簮鍖呭悕", "\t", "璧勬簮鍚�", "\t", "鏃堕棿");
         assetBundleLoadLogs.Insert(0, tile);
         File.WriteAllLines(Application.dataPath + "/RunTimeABLoadLog.txt", assetBundleLoadLogs.ToArray());
     }
diff --git a/Main/Utility/TimeUtility.cs b/Main/Utility/TimeUtility.cs
index f30b538..5dc5ea8 100644
--- a/Main/Utility/TimeUtility.cs
+++ b/Main/Utility/TimeUtility.cs
@@ -249,7 +249,7 @@
         int hours = _seconds / 3600;
         int mins = _seconds % 3600 / 60;
         int seconds = _seconds % 60;
-        return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
+        return StringUtility.Concat(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
     }
 
 
@@ -264,15 +264,15 @@
         int seconds = _seconds % 60;
         if (hours > 0)
         {
-            return StringUtility.Contact(hours, Language.Get("L1072"), mins, Language.Get("L1073"), seconds, Language.Get("L1075"));
+            return StringUtility.Concat(hours.ToString(), Language.Get("L1072"), mins.ToString(), Language.Get("L1073"), seconds.ToString(), Language.Get("L1075"));
         }
         else if (mins > 0)
         {
-            return StringUtility.Contact(mins, Language.Get("L1073"), seconds, Language.Get("L1075"));
+            return StringUtility.Contact(mins.ToString(), Language.Get("L1073"), seconds.ToString(), Language.Get("L1075"));
         }
         else
         {
-            return StringUtility.Contact(seconds, Language.Get("L1075"));
+            return StringUtility.Contact(seconds.ToString(), Language.Get("L1075"));
         }
     }
 
@@ -294,7 +294,7 @@
         int hours = _seconds % 86400 / 3600;
         int mins = _seconds % 3600 / 60;
         int seconds = _seconds % 60;
-        return StringUtility.Contact(days > 0 ? days.ToString() : string.Empty,
+        return StringUtility.Concat(days > 0 ? days.ToString() : string.Empty,
             days > 0 ? Language.Get("L1074") + " " : string.Empty, hours > 0 ? hours.ToString() : string.Empty,
             hours > 0 ? ":" : string.Empty, mins >= 0 ? mins.ToString("D2") : string.Empty,
             mins >= 0 ? ":" : string.Empty, seconds >= 0 ? seconds.ToString("D2") : string.Empty,
@@ -311,19 +311,19 @@
         int days = _seconds / 86400;
         if (days > 0)
         {
-            return StringUtility.Contact(days, Language.Get("L1074"));
+            return StringUtility.Contact(days.ToString(), Language.Get("L1074"));
         }
         int hours = _seconds % 86400 / 3600;
         if (hours > 0)
         {
-            return StringUtility.Contact(hours, Language.Get("Hour"));
+            return StringUtility.Contact(hours.ToString(), Language.Get("Hour"));
         }
         int mins = Mathf.CeilToInt(_seconds % 3600 / 60.0f);
         if (mins > 0)
         {
-            return StringUtility.Contact(mins, Language.Get("Minute"));
+            return StringUtility.Contact(mins.ToString(), Language.Get("Minute"));
         }
-        return StringUtility.Contact(1, Language.Get("Minute"));
+        return StringUtility.Contact("1", Language.Get("Minute"));
     }
 
 
@@ -364,9 +364,9 @@
         int seconds = _seconds % 60;
         if (days > 0)
         {
-            return StringUtility.Contact(days, Language.Get("L1074"), " ", hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
+            return StringUtility.Concat(days.ToString(), Language.Get("L1074"), " ", hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
         }
-        return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
+        return StringUtility.Concat(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
     }
 
     //鏋佺畝鏄剧ず
@@ -384,23 +384,23 @@
         {
             if (hours == 0)
             {
-                return StringUtility.Contact(days, Language.Get("L1074"));
+                return StringUtility.Contact(days.ToString(), Language.Get("L1074"));
             }
-            return StringUtility.Contact(days, Language.Get("L1074"), hours, Language.Get("L1072"));
+            return StringUtility.Contact(days.ToString(), Language.Get("L1074"), hours.ToString(), Language.Get("L1072"));
         }
         else if (hours > 0)
         {
             if (mins == 0)
             {
-                return StringUtility.Contact(hours, Language.Get("L1072"));
+                return StringUtility.Contact(hours.ToString(), Language.Get("L1072"));
             }
-            return StringUtility.Contact(hours, Language.Get("L1072"), mins, Language.Get("L1073"));
+            return StringUtility.Contact(hours.ToString(), Language.Get("L1072"), mins.ToString(), Language.Get("L1073"));
         }
         else if (mins > 0)
         { 
-            return StringUtility.Contact(mins, Language.Get("L1073"));
+            return StringUtility.Contact(mins.ToString(), Language.Get("L1073"));
         }
-        return StringUtility.Contact(seconds, Language.Get("L1075"));
+        return StringUtility.Contact(seconds.ToString(), Language.Get("L1075"));
     }
 
 
@@ -416,9 +416,9 @@
         int seconds = _seconds % 60;
         if (days > 0)
         {
-            return StringUtility.Contact(days, Language.Get("L1074"), hours.ToString("D2"), Language.Get("L1072"), mins.ToString("D2"), Language.Get("L1073"));
+            return StringUtility.Concat(days.ToString(), Language.Get("L1074"), hours.ToString("D2"), Language.Get("L1072"), mins.ToString("D2"), Language.Get("L1073"));
         }
-        return StringUtility.Contact(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
+        return StringUtility.Concat(hours.ToString("D2"), ":", mins.ToString("D2"), ":", seconds.ToString("D2"));
     }
 
 
@@ -435,19 +435,19 @@
         float seconds = (float)_seconds % 60;
         if (days >= 1)
         {
-            return StringUtility.Contact(Mathf.CeilToInt(days), Language.Get("L1074"));
+            return StringUtility.Contact(Mathf.CeilToInt(days).ToString(), Language.Get("L1074"));
         }
         else if (hours >= 1)
         {
-            return StringUtility.Contact(Mathf.CeilToInt(hours), Language.Get("L1072"));
+            return StringUtility.Contact(Mathf.CeilToInt(hours).ToString(), Language.Get("L1072"));
         }
         else if (mins >= 1)
         {
-            return StringUtility.Contact(mins, Language.Get("L1073"));
+            return StringUtility.Contact(mins.ToString(), Language.Get("L1073"));
         }
         else
         {
-            return StringUtility.Contact(seconds, Language.Get("L1075"));
+            return StringUtility.Contact(seconds.ToString(), Language.Get("L1075"));
         }
     }
 
diff --git a/Main/Utility/UIHelper.cs b/Main/Utility/UIHelper.cs
index f907b9d..d2e3d43 100644
--- a/Main/Utility/UIHelper.cs
+++ b/Main/Utility/UIHelper.cs
@@ -40,7 +40,7 @@
             if (part != 0)
             {
                 if (needZero)
-                    result = StringUtility.Contact(numbers[0] + result);
+                    result = StringUtility.Concat(numbers[0] + result);
 
                 result = numbers[part] + (unitPlace == 1 ? "" : units[unitPlace - 2]) + result; // 鍗曚綅鍙湪鍗併�佺櫨銆佸崈銆佷竾鍐呴儴浣跨敤
                 needZero = false;
@@ -129,20 +129,20 @@
             {
                 if (attrName.Length == 2)
                 {
-                    suitStr = StringUtility.Contact(suitStr, attrName[i], "        ");
+                    suitStr = StringUtility.Contact(suitStr, attrName[i].ToString(), "        ");
                 }
                 else if (attrName.Length == 3)
                 {
-                    suitStr = StringUtility.Contact(suitStr, attrName[i], "  ");
+                    suitStr = StringUtility.Contact(suitStr, attrName[i].ToString(), "  ");
                 }
                 else
                 {
-                    suitStr = StringUtility.Contact(suitStr, attrName[i]);
+                    suitStr = StringUtility.Contact(suitStr, attrName[i].ToString());
                 }
             }
             else
             {
-                suitStr = StringUtility.Contact(suitStr, attrName[i]);
+                suitStr = StringUtility.Contact(suitStr, attrName[i].ToString());
             }
         }
         return suitStr;
@@ -728,17 +728,17 @@
         {
             case TextColType.None:
             case TextColType.White:
-                return StringUtility.Contact("<color=#", bright ? "ffffff" : "ffffff", ">", msg, "</color>");
+                return StringUtility.Concat("<color=#", bright ? "ffffff" : "ffffff", ">", msg, "</color>");
             case TextColType.titleSelectColor:
                 return StringUtility.Contact("<color=#7F4139>", msg, "</color>");
             case TextColType.titleUnSelectColor:
                 return StringUtility.Contact("<color=#6E5C60>", msg, "</color>");
             case TextColType.Red:
-                return StringUtility.Contact("<color=#", bright ? "ea261e" : "ea261e", ">", msg, "</color>");
+                return StringUtility.Concat("<color=#", bright ? "ea261e" : "ea261e", ">", msg, "</color>");
             case TextColType.Pink:
-                return StringUtility.Contact("<color=#", bright ? "f6408d" : "ff7c7c", ">", msg, "</color>");
+                return StringUtility.Concat("<color=#", bright ? "f6408d" : "ff7c7c", ">", msg, "</color>");
             case TextColType.Green:
-                return StringUtility.Contact("<color=#", bright ? "248B12" : "2ae337", ">", msg, "</color>");
+                return StringUtility.Concat("<color=#", bright ? "248B12" : "2ae337", ">", msg, "</color>");
             case TextColType.NavyBrown:
                 return StringUtility.Contact("<color=#6e4c31>", msg, "</color>");
             case TextColType.DarkGreen:
@@ -796,7 +796,7 @@
 
     public static string AppendColor(Color color, string msg)
     {
-        return StringUtility.Contact("<color=#", ColorToHexWithHash(color), ">", msg, "</color>");
+        return StringUtility.Concat("<color=#", ColorToHexWithHash(color), ">", msg, "</color>");
     }
 
 
diff --git a/Main/Utility/UIParamCopyTool.cs b/Main/Utility/UIParamCopyTool.cs
index ec04a10..faa724c 100644
--- a/Main/Utility/UIParamCopyTool.cs
+++ b/Main/Utility/UIParamCopyTool.cs
@@ -244,8 +244,8 @@
             GUILayout.BeginHorizontal();
             var _copyTarget = _target.copyTargets[i];
             _copyTarget.ok = EditorGUILayout.Toggle("鏄惁鏇挎崲", _copyTarget.ok, GUILayout.Width(40));
-            EditorGUILayout.LabelField(StringUtility.Contact("Image", _copyTarget.images.Count));
-            EditorGUILayout.LabelField(StringUtility.Contact("Text", _copyTarget.texts.Count));
+            EditorGUILayout.LabelField(StringUtility.Contact("Image", _copyTarget.images.Count.ToString()));
+            EditorGUILayout.LabelField(StringUtility.Contact("Text", _copyTarget.texts.Count.ToString()));
             GUILayout.EndHorizontal();
         }
         GUILayout.EndScrollView();

--
Gitblit v1.8.0