From fcce9ab0e54e4580569ba4ed5be0f4e3ba4d37fa Mon Sep 17 00:00:00 2001
From: hch <305670599@qq.com>
Date: 星期二, 09 十二月 2025 17:12:02 +0800
Subject: [PATCH] 0312 优化字符串拼接 - 改名
---
Assets/Editor/Tool/BytesVersionMaker.cs | 4
Assets/Editor/Tool/UpdateSpritePackingSetting.cs | 6
Assets/Launch/Manager/LocalResManager.cs | 4
Assets/Editor/Tool/AssetsVersionCmpMaker.cs | 2
Assets/Editor/Tool/AssetsVersionMaker.cs | 4
Assets/Launch/Common/AssetVersion.cs | 4
Assets/Editor/Tool/SpriteManageTool.cs | 16
Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs | 28 +-
Assets/Editor/Tool/ClientPackage_Standalone.cs | 24 +-
Assets/Launch/Common/FileExtersion.cs | 2
Assets/Editor/Tool/ClientPackage.cs | 62 +++---
Assets/Launch/UI/LaunchWins/LaunchExWin.cs | 4
Assets/Editor/Web/NetPkgTool.cs | 4
Assets/Launch/Common/DownLoadAndDiscompressTask.cs | 4
Assets/Launch/Utility/StringUtility.cs | 199 +++++++++++++++++----
Assets/Editor/Tool/AssetBundleBuildExtersion.cs | 10
Assets/Launch/Launch.cs | 1
Assets/Editor/Tool/BuildExtersion.cs | 8
Assets/Editor/ConfigGen/ConfigClassGenerate.cs | 130 +++++++-------
Assets/Editor/Tool/AssetBundleBuildTool.cs | 6
20 files changed, 318 insertions(+), 204 deletions(-)
diff --git a/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs b/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
index 112d4e1..95a28ef 100644
--- a/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
+++ b/Assets/Editor/AssetBundleBrowser/AssetBundleBuildTab.cs
@@ -37,12 +37,12 @@
switch (m_UserData.m_BuildTarget)
{
case ValidBuildTarget.Android:
- return StringUtility.Contact("Assets/StreamingAssets", "/android");
+ return StringUtility.Concat("Assets/StreamingAssets", "/android");
case ValidBuildTarget.iOS:
- return StringUtility.Contact("Assets/StreamingAssets", "/ios");
+ return StringUtility.Concat("Assets/StreamingAssets", "/ios");
case ValidBuildTarget.StandaloneWindows:
case ValidBuildTarget.StandaloneWindows64:
- return StringUtility.Contact("Assets/StreamingAssets", "/standalone");
+ return StringUtility.Concat("Assets/StreamingAssets", "/standalone");
default:
return "Assets/StreamingAssets";
}
@@ -680,7 +680,7 @@
{
UpdateScriptableObjectsSetting.SetAllScriptableObjectAssetBundleName();
ExcuteBuildAsset("config");
- TableTool.CopyConfigsToOutPutPath(StringUtility.Contact(m_UserData.m_OutputPath, "/config"));
+ TableTool.CopyConfigsToOutPutPath(StringUtility.Concat(m_UserData.m_OutputPath, "/config"));
Debug.Log("config 澶勭悊瀹屾垚");
}
//鍙戝寘鏃惰幏鍙栫儹鏇磀ll鍜岃鍓狝OT
@@ -690,7 +690,7 @@
PrebuildCommand.GenerateAll();
// 杈撳嚭鍒癆ssetBundles鐩綍
var outputPath = Application.dataPath.Replace("Assets", m_UserData.m_OutputPath);
- outputPath = StringUtility.Contact(outputPath, "/logicbytes");
+ outputPath = StringUtility.Concat(outputPath, "/logicbytes");
if (Directory.Exists(outputPath))
Directory.Delete(outputPath, true);
//澶嶅埗鏂扮敓鎴愮殑AOT dll鍒版寚瀹氳矾寰�
@@ -712,7 +712,7 @@
}
// 杈撳嚭鍒癆ssetBundles鐩綍
var outputPath = Application.dataPath.Replace("Assets", m_UserData.m_OutputPath);
- outputPath = StringUtility.Contact(outputPath, "/logicbytes");
+ outputPath = StringUtility.Concat(outputPath, "/logicbytes");
CopyHotUpdateDll(outputPath);
MakeBytesVersionFile();
AssetDatabase.Refresh();
@@ -721,7 +721,7 @@
private void MakeBytesVersionFile()
{
var fileInfos = new List<FileInfo>();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(m_UserData.m_OutputPath, "/logicbytes"), fileInfos);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(m_UserData.m_OutputPath, "/logicbytes"), fileInfos);
BytesVersionMaker.WriteAssetsVersionFile(Path.Combine(Directory.GetParent(Application.dataPath).FullName, m_UserData.m_OutputPath), fileInfos);
Debug.Log("鐑洿鏂颁唬鐮佹洿鏂板畬姣曪紝鐢熸垚md5鏂囦欢");
}
@@ -738,7 +738,7 @@
//HybridCLR Settings闈㈡澘涓婅缃殑瑁佸噺鍚嶢OT dll杈撳嚭鏍圭洰褰�
string strippedAOTDllOutputRootDir = "/" + HybridCLRSettings.Instance.strippedAOTDllOutputRootDir;
//閲嶆柊鐢熸垚鐨凙OT鎵�鍦ㄨ矾寰�
- string aotDir = StringUtility.Contact(rootDir, strippedAOTDllOutputRootDir, platformName);
+ string aotDir = StringUtility.Concat(rootDir, strippedAOTDllOutputRootDir, platformName);
if (Directory.Exists(checkAotDir))
{
@@ -750,7 +750,7 @@
for (int i = 0; i < AOTGenericReferences.PatchedAOTAssemblyList.Count; i++)
{
- string dllFile = StringUtility.Contact(aotDir, AOTGenericReferences.PatchedAOTAssemblyList[i]);
+ string dllFile = StringUtility.Concat(aotDir, AOTGenericReferences.PatchedAOTAssemblyList[i]);
var outDllFile = outputPath + "/" + AOTGenericReferences.PatchedAOTAssemblyList[i] + ".bytes";
if (!File.Exists(dllFile))
{
@@ -774,7 +774,7 @@
//HybridCLR Settings闈㈡澘涓婅缃殑鐑洿鏂癲ll缂栬瘧杈撳嚭鏍圭洰褰�
string hotUpdateDllCompileOutputRootDir = "/" + HybridCLRSettings.Instance.hotUpdateDllCompileOutputRootDir;
//鐑洿DLL鐢熸垚鐩綍
- string hotDllDir = StringUtility.Contact(rootDir, hotUpdateDllCompileOutputRootDir, platformName);
+ string hotDllDir = StringUtility.Concat(rootDir, hotUpdateDllCompileOutputRootDir, platformName);
//HybridCLR鐨凷ettings闈㈡澘涓婅缃殑鐑洿鏂癆ssembly Definitions 璧勬簮
var assemblyDefinitionAsset = HybridCLRSettings.Instance.hotUpdateAssemblyDefinitions;
for (int i = 0; i < assemblyDefinitionAsset.Length; i++)
@@ -782,7 +782,7 @@
string assemblyPath = AssetDatabase.GetAssetPath(assemblyDefinitionAsset[i]);
string assemblyName = Path.GetFileNameWithoutExtension(assemblyPath);
- string dllFile = StringUtility.Contact(hotDllDir, assemblyName, ".dll");
+ string dllFile = StringUtility.Concat(hotDllDir, assemblyName, ".dll");
var outDllFile = outputPath + "/" + assemblyName + ".dll.bytes";
if (!File.Exists(dllFile))
{
@@ -798,7 +798,7 @@
string[] hotUpdateAssemblies = HybridCLRSettings.Instance.hotUpdateAssemblies;
for (int i = 0; i < hotUpdateAssemblies.Length; i++)
{
- string dllFile = StringUtility.Contact(hotDllDir, hotUpdateAssemblies[i], ".dll");
+ string dllFile = StringUtility.Concat(hotDllDir, hotUpdateAssemblies[i], ".dll");
var outDllFile = outputPath + "/" + hotUpdateAssemblies[i] + ".dll.bytes";
if (!File.Exists(dllFile))
{
@@ -814,7 +814,7 @@
string[] preserveHotUpdateAssemblies = HybridCLRSettings.Instance.preserveHotUpdateAssemblies;
for (int i = 0; i < preserveHotUpdateAssemblies.Length; i++)
{
- string dllFile = StringUtility.Contact(hotDllDir, preserveHotUpdateAssemblies[i], ".dll");
+ string dllFile = StringUtility.Concat(hotDllDir, preserveHotUpdateAssemblies[i], ".dll");
var outDllFile = outputPath + "/" + preserveHotUpdateAssemblies[i] + ".dll.bytes";
if (!File.Exists(dllFile))
{
@@ -1067,7 +1067,7 @@
private void ExecuteSwitchVersionConfig()
{
- var newVersionConfigPath = StringUtility.Contact("Assets/Resources/ScriptableObject/Config/VersionConfig", ".asset");
+ var newVersionConfigPath = StringUtility.Concat("Assets/Resources/ScriptableObject/Config/VersionConfig", ".asset");
var versionsFilePath = Application.dataPath + Path.DirectorySeparatorChar + "Editor/VersionConfigs/Versions.txt";
var lines = File.ReadAllLines(versionsFilePath);
diff --git a/Assets/Editor/ConfigGen/ConfigClassGenerate.cs b/Assets/Editor/ConfigGen/ConfigClassGenerate.cs
index 25f551a..098c50b 100644
--- a/Assets/Editor/ConfigGen/ConfigClassGenerate.cs
+++ b/Assets/Editor/ConfigGen/ConfigClassGenerate.cs
@@ -95,79 +95,79 @@
field = field.Replace(" ", "");
if (type.Contains("Dictionary<int, int[][]>"))
{
- return StringUtility.Contact("public Dictionary<int, int[][]> ", field.Trim(), ";");
+ return StringUtility.Concat("public Dictionary<int, int[][]> ", field.Trim(), ";");
}
else if (type.Contains("int[][]"))
{
- return StringUtility.Contact("public int[][] ", field.Trim(), ";");
+ return StringUtility.Concat("public int[][] ", field.Trim(), ";");
}
else if (type.Contains("Dictionary<int, int>"))
{
- return StringUtility.Contact("public Dictionary<int, int> ", field.Trim(), ";");
+ return StringUtility.Concat("public Dictionary<int, int> ", field.Trim(), ";");
}
else if (type.Contains("Dictionary<int, int[]>"))
{
- return StringUtility.Contact("public Dictionary<int, int[]> ", field.Trim(), ";");
+ return StringUtility.Concat("public Dictionary<int, int[]> ", field.Trim(), ";");
}
else if (type.Contains("float[][]"))
{
- return StringUtility.Contact("public float[][] ", field.Trim(), ";");
+ return StringUtility.Concat("public float[][] ", field.Trim(), ";");
}
else if (type.Contains("int[]"))
{
- return StringUtility.Contact("public int[] ", field.Trim(), ";");
+ return StringUtility.Concat("public int[] ", field.Trim(), ";");
}
else if (type.Contains("Int2[]"))
{
- return StringUtility.Contact("public Int2[] ", field.Trim(), ";");
+ return StringUtility.Concat("public Int2[] ", field.Trim(), ";");
}
else if (type.Contains("Int3[]"))
{
- return StringUtility.Contact("public Int3[] ", field.Trim(), ";");
+ return StringUtility.Concat("public Int3[] ", field.Trim(), ";");
}
else if (type.Contains("float[]"))
{
- return StringUtility.Contact("public float[] ", field.Trim(), ";");
+ return StringUtility.Concat("public float[] ", field.Trim(), ";");
}
else if (type.Contains("string[]"))
{
- return StringUtility.Contact("public string[] ", field.Trim(), ";");
+ return StringUtility.Concat("public string[] ", field.Trim(), ";");
}
else if (type.Contains("Vector3[]"))
{
- return StringUtility.Contact("public Vector3[] ", field.Trim(), ";");
+ return StringUtility.Concat("public Vector3[] ", field.Trim(), ";");
}
else if (type.Contains("int"))
{
- return StringUtility.Contact("public int ", field.Trim(), ";");
+ return StringUtility.Concat("public int ", field.Trim(), ";");
}
else if (type.Contains("long"))
{
- return StringUtility.Contact("public long ", field.Trim(), ";");
+ return StringUtility.Concat("public long ", field.Trim(), ";");
}
else if (type.Contains("float"))
{
- return StringUtility.Contact("public float ", field.Trim(), ";");
+ return StringUtility.Concat("public float ", field.Trim(), ";");
}
else if (type.Contains("string"))
{
- return StringUtility.Contact("public string ", field, ";");
+ return StringUtility.Concat("public string ", field, ";");
}
else if (type.Contains("Vector3"))
{
- return StringUtility.Contact("public Vector3 ", field.Trim(), ";");
+ return StringUtility.Concat("public Vector3 ", field.Trim(), ";");
}
else if (type.Contains("bool"))
{
- return StringUtility.Contact("public bool ", field.Trim(), ";");
+ return StringUtility.Concat("public bool ", field.Trim(), ";");
}
else if (type.Contains("Int2"))
{
- return StringUtility.Contact("public Int2 ", field.Trim(), ";");
+ return StringUtility.Concat("public Int2 ", field.Trim(), ";");
}
else if (type.Contains("Int3"))
{
- return StringUtility.Contact("public Int3 ", field.Trim(), ";");
+ return StringUtility.Concat("public Int3 ", field.Trim(), ";");
}
else
{
@@ -203,11 +203,11 @@
}
// else if (type.Contains("Int2[]"))
// {
- // return StringUtility.Contact("public Int2[] ", field.Trim(), ";");
+ // return StringUtility.Concat("public Int2[] ", field.Trim(), ";");
// }
// else if (type.Contains("Int3[]"))
// {
- // return StringUtility.Contact("public Int3[] ", field.Trim(), ";");
+ // return StringUtility.Concat("public Int3[] ", field.Trim(), ";");
// }
else if (type.Contains("float[]"))
{
@@ -247,11 +247,11 @@
}
// else if (type.Contains("Int2"))
// {
- // return StringUtility.Contact("public Int2 ", field.Trim(), ";");
+ // return StringUtility.Concat("public Int2 ", field.Trim(), ";");
// }
// else if (type.Contains("Int3"))
// {
- // return StringUtility.Contact("public Int3 ", field.Trim(), ";");
+ // return StringUtility.Concat("public Int3 ", field.Trim(), ";");
// }
else
{
@@ -265,79 +265,79 @@
field = field.Replace(" ", "");
if (type.Contains("Dictionary<int, int[][]>"))
{
- return StringUtility.Contact("public Dictionary<int, int[][]> ", field.Trim(), ";");
+ return StringUtility.Concat("public Dictionary<int, int[][]> ", field.Trim(), ";");
}
else if (type.Contains("int[][]"))
{
- return StringUtility.Contact("public int[][] ", field.Trim(), ";");
+ return StringUtility.Concat("public int[][] ", field.Trim(), ";");
}
else if (type.Contains("Dictionary<int, int>"))
{
- return StringUtility.Contact("public Dictionary<int, int> ", field.Trim(), ";");
+ return StringUtility.Concat("public Dictionary<int, int> ", field.Trim(), ";");
}
else if (type.Contains("Dictionary<int, int[]>"))
{
- return StringUtility.Contact("public Dictionary<int, int[]> ", field.Trim(), ";");
+ return StringUtility.Concat("public Dictionary<int, int[]> ", field.Trim(), ";");
}
else if (type.Contains("float[][]"))
{
- return StringUtility.Contact("public float[][] ", field.Trim(), ";");
+ return StringUtility.Concat("public float[][] ", field.Trim(), ";");
}
else if (type.Contains("int[]"))
{
- return StringUtility.Contact("public int[] ", field.Trim(), ";");
+ return StringUtility.Concat("public int[] ", field.Trim(), ";");
}
else if (type.Contains("Int2[]"))
{
- return StringUtility.Contact("public Int2[] ", field.Trim(), ";");
+ return StringUtility.Concat("public Int2[] ", field.Trim(), ";");
}
else if (type.Contains("Int3[]"))
{
- return StringUtility.Contact("public Int3[] ", field.Trim(), ";");
+ return StringUtility.Concat("public Int3[] ", field.Trim(), ";");
}
else if (type.Contains("float[]"))
{
- return StringUtility.Contact("public float[] ", field.Trim(), ";");
+ return StringUtility.Concat("public float[] ", field.Trim(), ";");
}
else if (type.Contains("string[]"))
{
- return StringUtility.Contact("public string[] ", field.Trim(), ";");
+ return StringUtility.Concat("public string[] ", field.Trim(), ";");
}
else if (type.Contains("Vector3[]"))
{
- return StringUtility.Contact("public Vector3[] ", field.Trim(), ";");
+ return StringUtility.Concat("public Vector3[] ", field.Trim(), ";");
}
else if (type.Contains("int"))
{
- return StringUtility.Contact("public int ", field.Trim(), ";");
+ return StringUtility.Concat("public int ", field.Trim(), ";");
}
else if (type.Contains("long"))
{
- return StringUtility.Contact("public long ", field.Trim(), ";");
+ return StringUtility.Concat("public long ", field.Trim(), ";");
}
else if (type.Contains("float"))
{
- return StringUtility.Contact("public float ", field.Trim(), ";");
+ return StringUtility.Concat("public float ", field.Trim(), ";");
}
else if (type.Contains("string"))
{
- return StringUtility.Contact("public string ", field, ";");
+ return StringUtility.Concat("public string ", field, ";");
}
else if (type.Contains("Vector3"))
{
- return StringUtility.Contact("public Vector3 ", field.Trim(), ";");
+ return StringUtility.Concat("public Vector3 ", field.Trim(), ";");
}
else if (type.Contains("bool"))
{
- return StringUtility.Contact("public bool ", field.Trim(), ";");
+ return StringUtility.Concat("public bool ", field.Trim(), ";");
}
else if (type.Contains("Int2"))
{
- return StringUtility.Contact("public Int2 ", field.Trim(), ";");
+ return StringUtility.Concat("public Int2 ", field.Trim(), ";");
}
else if (type.Contains("Int3"))
{
- return StringUtility.Contact("public Int3 ", field.Trim(), ";");
+ return StringUtility.Concat("public Int3 ", field.Trim(), ";");
}
else
{
@@ -371,19 +371,19 @@
}
else if (type.Contains("int[]"))
{
- var line0 = StringUtility.Contact("if (tables", "[", index.ToString(), "].Contains(\"[\"))\n");
- var line0_1 = StringUtility.Contact(retract3, "{\n");
+ var line0 = StringUtility.Concat("if (tables", "[", index.ToString(), "].Contains(\"[\"))\n");
+ var line0_1 = StringUtility.Concat(retract3, "{\n");
var line0_2 = StringUtility.Concat(retract4, field, " = JsonMapper.ToObject<int[]>(tables", "[", index.ToString(), "]);\n");
- var line0_3 = StringUtility.Contact(retract3, "}\n");
- var line0_4 = StringUtility.Contact(retract3, "else\n");
- var line0_5 = StringUtility.Contact(retract3, "{\n");
+ var line0_3 = StringUtility.Concat(retract3, "}\n");
+ var line0_4 = StringUtility.Concat(retract3, "else\n");
+ var line0_5 = StringUtility.Concat(retract3, "{\n");
var line1 = StringUtility.Concat(retract4, "string[] ", field, "StringArray", " = ", "tables", "[", index.ToString(), "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
var line2 = StringUtility.Concat(retract4, field, " = ", "new int", "[", field, "StringArray.Length]", ";", "\n");
var line3 = StringUtility.Concat(retract4, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
- var line4 = StringUtility.Contact(retract4, "{\n");
+ var line4 = StringUtility.Concat(retract4, "{\n");
var line5 = StringUtility.Concat(retract5, " int.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
- var line6 = StringUtility.Contact(retract4, "}\n");
- var line0_6 = StringUtility.Contact(retract3, "}");
+ var line6 = StringUtility.Concat(retract4, "}\n");
+ var line0_6 = StringUtility.Concat(retract3, "}");
return StringUtility.Concat(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6);
}
@@ -392,9 +392,9 @@
var line1 = StringUtility.Concat("string[] ", field, "StringArray", " = ", "tables", "[", index.ToString(), "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
var line2 = StringUtility.Concat(retract3, field, " = ", "new Int2", "[", field, "StringArray.Length]", ";", "\n");
var line3 = StringUtility.Concat(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
- var line4 = StringUtility.Contact(retract3, "{\n");
+ var line4 = StringUtility.Concat(retract3, "{\n");
var line5 = StringUtility.Concat(retract4, " Int2.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
- var line6 = StringUtility.Contact(retract3, "}");
+ var line6 = StringUtility.Concat(retract3, "}");
return StringUtility.Concat(line1, line2, line3, line4, line5, line6);
}
@@ -403,27 +403,27 @@
var line1 = StringUtility.Concat("string[] ", field, "StringArray", " = ", "tables", "[", index.ToString(), "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
var line2 = StringUtility.Concat(retract3, field, " = ", "new Int3", "[", field, "StringArray.Length]", ";", "\n");
var line3 = StringUtility.Concat(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
- var line4 = StringUtility.Contact(retract3, "{\n");
+ var line4 = StringUtility.Concat(retract3, "{\n");
var line5 = StringUtility.Concat(retract4, " Int3.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
- var line6 = StringUtility.Contact(retract3, "}");
+ var line6 = StringUtility.Concat(retract3, "}");
return StringUtility.Concat(line1, line2, line3, line4, line5, line6);
}
else if (type.Contains("float[]"))
{
- var line0 = StringUtility.Contact("if (tables", "[", index.ToString(), "].Contains(\"[\"))\n");
- var line0_1 = StringUtility.Contact(retract3, "{\n");
+ var line0 = StringUtility.Concat("if (tables", "[", index.ToString(), "].Contains(\"[\"))\n");
+ var line0_1 = StringUtility.Concat(retract3, "{\n");
var line0_2 = StringUtility.Concat(retract4, field, " = JsonMapper.ToObject<float[]>(tables", "[", index.ToString(), "]);\n");
- var line0_3 = StringUtility.Contact(retract3, "}\n");
- var line0_4 = StringUtility.Contact(retract3, "else\n");
- var line0_5 = StringUtility.Contact(retract3, "{\n");
+ var line0_3 = StringUtility.Concat(retract3, "}\n");
+ var line0_4 = StringUtility.Concat(retract3, "else\n");
+ var line0_5 = StringUtility.Concat(retract3, "{\n");
var line1 = StringUtility.Concat(retract4, "string[] ", field, "StringArray", " = ", "tables", "[", index.ToString(), "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
var line2 = StringUtility.Concat(retract4, field, " = ", "new float", "[", field, "StringArray.Length", "]", ";", "\n");
var line3 = StringUtility.Concat(retract4, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
- var line4 = StringUtility.Contact(retract4, "{\n");
+ var line4 = StringUtility.Concat(retract4, "{\n");
var line5 = StringUtility.Concat(retract5, " float.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
- var line6 = StringUtility.Contact(retract4, "}\n");
- var line0_6 = StringUtility.Contact(retract3, "}");
+ var line6 = StringUtility.Concat(retract4, "}\n");
+ var line0_6 = StringUtility.Concat(retract3, "}");
return StringUtility.Concat(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6);
}
@@ -437,9 +437,9 @@
var line1 = StringUtility.Concat("string[] ", field, "StringArray", " = ", "tables", "[", index.ToString(), "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
var line2 = StringUtility.Concat(retract3, field, " = ", "new Vector3", "[", field, "StringArray.Length", "]", ";", "\n");
var line3 = StringUtility.Concat(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
- var line4 = StringUtility.Contact(retract3, "{\n");
+ var line4 = StringUtility.Concat(retract3, "{\n");
var line5 = StringUtility.Concat(retract4, field, "[i]", "=", field, "StringArray", "[i]", ".Vector3Parse()", ";", "\n");
- var line6 = StringUtility.Contact(retract3, "}");
+ var line6 = StringUtility.Concat(retract3, "}");
return StringUtility.Concat(line1, line2, line3, line4, line5, line6);
}
@@ -468,7 +468,7 @@
var line1 = StringUtility.Concat("var ", field, "Temp", " = 0", ";", "\n");
var line2 = StringUtility.Concat(retract3, "int.TryParse(tables", "[", index.ToString(), "]", ",", "out ", field, "Temp", ")", "; ", "\n");
var line3 = StringUtility.Concat(retract3, field, "=", field, "Temp", "!=0", ";");
- return StringUtility.Contact(line1, line2, line3);
+ return StringUtility.Concat(line1, line2, line3);
}
else if (type.Contains("Int2"))
{
diff --git a/Assets/Editor/Tool/AssetBundleBuildExtersion.cs b/Assets/Editor/Tool/AssetBundleBuildExtersion.cs
index 7dc8aab..bcb716e 100644
--- a/Assets/Editor/Tool/AssetBundleBuildExtersion.cs
+++ b/Assets/Editor/Tool/AssetBundleBuildExtersion.cs
@@ -47,11 +47,11 @@
assets.Add(assetBundleBuild);
}
- var rootPath = StringUtility.Contact(output, Path.AltDirectorySeparatorChar.ToString(), category);
- var mainFile = StringUtility.Contact(output, Path.AltDirectorySeparatorChar.ToString(), GetMainFestFileName(buildTarget));//鏀瑰悕瀛楀墠
- var mainFileRename = StringUtility.Contact(output, Path.AltDirectorySeparatorChar.ToString(), AssetVersionUtility.EncodeFileName(category), "_assetbundle");//鏀瑰悕瀛楀悗
- var manifest = StringUtility.Contact(output, Path.AltDirectorySeparatorChar.ToString(), GetMainFestFileName(buildTarget), ".manifest");
- var manifestRename = StringUtility.Contact(output, Path.AltDirectorySeparatorChar.ToString(), AssetVersionUtility.EncodeFileName(category), "_assetbundle.manifest");
+ var rootPath = StringUtility.Concat(output, Path.AltDirectorySeparatorChar.ToString(), category);
+ var mainFile = StringUtility.Concat(output, Path.AltDirectorySeparatorChar.ToString(), GetMainFestFileName(buildTarget));//鏀瑰悕瀛楀墠
+ var mainFileRename = StringUtility.Concat(output, Path.AltDirectorySeparatorChar.ToString(), AssetVersionUtility.EncodeFileName(category), "_assetbundle");//鏀瑰悕瀛楀悗
+ var manifest = StringUtility.Concat(output, Path.AltDirectorySeparatorChar.ToString(), GetMainFestFileName(buildTarget), ".manifest");
+ var manifestRename = StringUtility.Concat(output, Path.AltDirectorySeparatorChar.ToString(), AssetVersionUtility.EncodeFileName(category), "_assetbundle.manifest");
if (rebuild && Directory.Exists(rootPath))
Directory.Delete(rootPath, true);
diff --git a/Assets/Editor/Tool/AssetBundleBuildTool.cs b/Assets/Editor/Tool/AssetBundleBuildTool.cs
index 6c70301..3aac266 100644
--- a/Assets/Editor/Tool/AssetBundleBuildTool.cs
+++ b/Assets/Editor/Tool/AssetBundleBuildTool.cs
@@ -13,8 +13,8 @@
// {
// BuildAssetBundleOptions opt = BuildAssetBundleOptions.ChunkBasedCompression | BuildAssetBundleOptions.DeterministicAssetBundle | BuildAssetBundleOptions.StrictMode;
- // string outputPath = StringUtility.Contact(System.Environment.CurrentDirectory, "/AssetBundles/", EditorUserBuildSettings.activeBuildTarget.ToString());
- // string streamingPath = StringUtility.Contact(Application.streamingAssetsPath, Path.AltDirectorySeparatorChar, EditorUserBuildSettings.activeBuildTarget.ToString());
+ // string outputPath = StringUtility.Concat(System.Environment.CurrentDirectory, "/AssetBundles/", EditorUserBuildSettings.activeBuildTarget.ToString());
+ // string streamingPath = StringUtility.Concat(Application.streamingAssetsPath, Path.AltDirectorySeparatorChar, EditorUserBuildSettings.activeBuildTarget.ToString());
// if (!Directory.Exists(outputPath))
// Directory.CreateDirectory(outputPath);
@@ -26,7 +26,7 @@
// AssetBundleBuildExtersion.Build(outputPath, "mobeffectshader", opt, EditorUserBuildSettings.activeBuildTarget, false);
// AssetBundleBuildExtersion.Build(outputPath, "config", opt, EditorUserBuildSettings.activeBuildTarget, false);
- // TableTool.CopyConfigsToOutPutPath(StringUtility.Contact(outputPath, "/config"));
+ // TableTool.CopyConfigsToOutPutPath(StringUtility.Concat(outputPath, "/config"));
// LuaBuildHelper.OnPreBuild();
// UpdateLuaSetting.SetAllLuaAssetBundleName();
diff --git a/Assets/Editor/Tool/AssetsVersionCmpMaker.cs b/Assets/Editor/Tool/AssetsVersionCmpMaker.cs
index 609efaa..fcc6689 100644
--- a/Assets/Editor/Tool/AssetsVersionCmpMaker.cs
+++ b/Assets/Editor/Tool/AssetsVersionCmpMaker.cs
@@ -51,7 +51,7 @@
lines.Add(StringUtility.Concat(relativePath, "\t", extersion, "\t", fileSize.ToString(), "\t", md5));
}
- var assetVersionFile = StringUtility.Contact(Application.dataPath, "/Resources/AssetsVersionCmp.txt");
+ var assetVersionFile = StringUtility.Concat(Application.dataPath, "/Resources/AssetsVersionCmp.txt");
if (File.Exists(assetVersionFile))
{
File.Delete(assetVersionFile);
diff --git a/Assets/Editor/Tool/AssetsVersionMaker.cs b/Assets/Editor/Tool/AssetsVersionMaker.cs
index ecbb1e8..497d41e 100644
--- a/Assets/Editor/Tool/AssetsVersionMaker.cs
+++ b/Assets/Editor/Tool/AssetsVersionMaker.cs
@@ -42,13 +42,13 @@
lines.Add(StringUtility.Concat(relativePath, "\t", extersion, "\t", fileSize.ToString(), "\t", md5));
}
- var assetVersionFile = StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "AssetsVersion.txt");
+ var assetVersionFile = StringUtility.Concat(_path, Path.DirectorySeparatorChar.ToString(), "AssetsVersion.txt");
if (File.Exists(assetVersionFile))
{
File.Delete(assetVersionFile);
}
- File.WriteAllText(StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "AssetsVersion.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
+ File.WriteAllText(StringUtility.Concat(_path, Path.DirectorySeparatorChar.ToString(), "AssetsVersion.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
}
}
diff --git a/Assets/Editor/Tool/BuildExtersion.cs b/Assets/Editor/Tool/BuildExtersion.cs
index 1d50699..59edbe0 100644
--- a/Assets/Editor/Tool/BuildExtersion.cs
+++ b/Assets/Editor/Tool/BuildExtersion.cs
@@ -89,7 +89,7 @@
if (!buildParameters.error)
{
ExcuteBuildAsset("config", buildParameters);
- TableTool.CopyConfigsToOutPutPath(StringUtility.Contact(buildParameters.GetWholeOutPutPath(), "/config"));
+ TableTool.CopyConfigsToOutPutPath(StringUtility.Concat(buildParameters.GetWholeOutPutPath(), "/config"));
}
else
{
@@ -295,11 +295,11 @@
switch (buildTarget)
{
case BuildTarget.Android:
- return StringUtility.Contact(outputPath, "/android");
+ return StringUtility.Concat(outputPath, "/android");
case BuildTarget.iOS:
- return StringUtility.Contact(outputPath, "/ios");
+ return StringUtility.Concat(outputPath, "/ios");
case BuildTarget.StandaloneWindows:
- return StringUtility.Contact(outputPath, "/standalone");
+ return StringUtility.Concat(outputPath, "/standalone");
default:
return string.Empty;
}
diff --git a/Assets/Editor/Tool/BytesVersionMaker.cs b/Assets/Editor/Tool/BytesVersionMaker.cs
index e11c980..6ca070b 100644
--- a/Assets/Editor/Tool/BytesVersionMaker.cs
+++ b/Assets/Editor/Tool/BytesVersionMaker.cs
@@ -34,13 +34,13 @@
lines.Add(StringUtility.Concat(relativePath, "\t", extersion, "\t", fileSize.ToString(), "\t", md5));
}
- var assetVersionFile = StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "logicbytes.txt");
+ var assetVersionFile = StringUtility.Concat(_path, Path.DirectorySeparatorChar.ToString(), "logicbytes.txt");
if (File.Exists(assetVersionFile))
{
File.Delete(assetVersionFile);
}
- File.WriteAllText(StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "logicbytes.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
+ File.WriteAllText(StringUtility.Concat(_path, Path.DirectorySeparatorChar.ToString(), "logicbytes.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
}
}
diff --git a/Assets/Editor/Tool/ClientPackage.cs b/Assets/Editor/Tool/ClientPackage.cs
index 9897f71..636cea3 100644
--- a/Assets/Editor/Tool/ClientPackage.cs
+++ b/Assets/Editor/Tool/ClientPackage.cs
@@ -162,7 +162,7 @@
}
var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
- var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+ var to = StringUtility.Concat(ResourcesPath.Instance.StreamingAssetPath, relativePath);
var directory = Path.GetDirectoryName(to);
if (!Directory.Exists(directory))
{
@@ -194,7 +194,7 @@
var excludeFileFullNames = new List<string>();
var tempFiles = new List<FileInfo>();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/hero"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/hero"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -207,7 +207,7 @@
}
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/maps"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/maps"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -220,7 +220,7 @@
}
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/audio"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/audio"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -233,7 +233,7 @@
}
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/uieffect"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/uieffect"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -247,10 +247,10 @@
//鍓旈櫎瑙嗛璧勬簮
tempFiles.Clear();
- var videoPath = StringUtility.Contact(_assetBundlePath, "/video");
+ var videoPath = StringUtility.Concat(_assetBundlePath, "/video");
if (File.Exists(videoPath))
{
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/video"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/video"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -269,7 +269,7 @@
if (!includeConfig)
{
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/config"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/config"), tempFiles);
foreach (var file in tempFiles)
{
excludeFileFullNames.Add(file.FullName);
@@ -278,7 +278,7 @@
//鍓旈櫎UI璧勬簮
//tempFiles.Clear();
- //FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/ui/sprite"), tempFiles);
+ //FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/ui/sprite"), tempFiles);
//foreach (var file in tempFiles)
//{
// var fileName = Path.GetFileName(file.FullName);
@@ -290,7 +290,7 @@
if (!includeUI)
{
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/ui"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/ui"), tempFiles);
foreach (var file in tempFiles)
{
excludeFileFullNames.Add(file.FullName);
@@ -301,7 +301,7 @@
#if !UNITY_IOS
//鍓旈櫎UI璧勬簮
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/ui"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(_assetBundlePath, "/ui"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -329,7 +329,7 @@
foreach (var item in fromFiles)
{
var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
- var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+ var to = StringUtility.Concat(ResourcesPath.Instance.StreamingAssetPath, relativePath);
if (relativePath.StartsWith("patch"))//涓嶅寘鍚玬eta鏂囦欢鍜岃ˉ涓�
continue;
@@ -366,7 +366,7 @@
foreach (var item in fromFiles)
{
var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
- var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+ var to = StringUtility.Concat(ResourcesPath.Instance.StreamingAssetPath, relativePath);
if (relativePath.StartsWith("patch"))//涓嶅寘鍚玬eta鏂囦欢鍜岃ˉ涓�
continue;
@@ -397,7 +397,7 @@
public static void BuildApk(string _sdkPath, string _output, string _publisher, int _buildIndex, bool _development)
{
PreBuild(_publisher, _buildIndex);
- var auditTimeFile = StringUtility.Contact(Application.dataPath, Path.DirectorySeparatorChar.ToString(), "Resources/Config/AuditTime.txt");
+ var auditTimeFile = StringUtility.Concat(Application.dataPath, Path.DirectorySeparatorChar.ToString(), "Resources/Config/AuditTime.txt");
if (File.Exists(auditTimeFile))
{
File.Delete(auditTimeFile);
@@ -411,7 +411,7 @@
// if (text.Contains("VERSION_ALTERNATIVE"))
// {
// var pattern = "VERSION_ALTERNATIVE = \".*\"";
- // text = Regex.Replace(text, pattern, StringUtility.Contact("VERSION_ALTERNATIVE = ", "\"", versionConfig.m_Version, "\""));
+ // text = Regex.Replace(text, pattern, StringUtility.Concat("VERSION_ALTERNATIVE = ", "\"", versionConfig.m_Version, "\""));
// bool encoderShouldEmitUTF8Identifier = true;
// bool throwOnInvalidBytes = false;
@@ -428,7 +428,7 @@
// 鏇村悕鍘熸湁鏂囦欢
// string _gradleTemplateUrl = EditorApplication.applicationContentsPath + "/PlaybackEngines/AndroidPlayer/Tools/GradleTemplates/";
// string _gradleFileUrl = _gradleTemplateUrl + "mainTemplate.gradle";
- // string _diffGradleFileUrl = StringUtility.Contact(_sdkPath, "/GradleDiff/", versionConfig.appId, "/mainTemplate.gradle");
+ // string _diffGradleFileUrl = StringUtility.Concat(_sdkPath, "/GradleDiff/", versionConfig.appId, "/mainTemplate.gradle");
// FileInfo _fileInfo = new FileInfo(_diffGradleFileUrl);
// if (!_fileInfo.Exists)
@@ -486,28 +486,28 @@
string copySdkFile;
channelSdkPath = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/", variant);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/AndroidManifest.xml");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/AndroidManifest.xml");
File.Copy(copySdkFile, MANIFEST_PATH);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/baseProjectTemplate.gradle");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/baseProjectTemplate.gradle");
File.Copy(copySdkFile, File_baseProjectTemplate);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/deps.gradle");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/deps.gradle");
File.Copy(copySdkFile, File_deps);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/google-services.json");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/google-services.json");
File.Copy(copySdkFile, File_google_services);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/gradleTemplate.properties");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/gradleTemplate.properties");
File.Copy(copySdkFile, File_gradleTemplate);
- //copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.appId, "/LauncherManifest.xml");
+ //copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.appId, "/LauncherManifest.xml");
//File.Copy(copySdkFile, File_LauncherManifest);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/launcherTemplate.gradle");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/launcherTemplate.gradle");
File.Copy(copySdkFile, File_launcherTemplate);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/mainTemplate.gradle");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/mainTemplate.gradle");
File.Copy(copySdkFile, File_mainTemplate);
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/settingsTemplate.gradle");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/settingsTemplate.gradle");
File.Copy(copySdkFile, File_settingGradle);
if (versionConfig.sdkFileName == "hyyngame_huawei")
{
- copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/agconnect-services.json");
+ copySdkFile = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/agconnect-services.json");
File.Copy(copySdkFile, File_huawei_services);
}
@@ -574,11 +574,11 @@
if (versionConfig1.sdkFileName.Trim().Length != 0)
{
- FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/Channel/iOS/", versionConfig1.sdkFileName, "/Plugins"), iOS_PLUGIN_PATH);
+ FileExtersion.DirectoryCopy(StringUtility.Concat(_sdkPath, "/Channel/iOS/", versionConfig1.sdkFileName, "/Plugins"), iOS_PLUGIN_PATH);
}
else
{
- FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/Channel/iOS/", versionConfig1.appId, "/Plugins"), iOS_PLUGIN_PATH);
+ FileExtersion.DirectoryCopy(StringUtility.Concat(_sdkPath, "/Channel/iOS/", versionConfig1.appId, "/Plugins"), iOS_PLUGIN_PATH);
}
DateTime outTime;
@@ -630,7 +630,7 @@
private static void PreBuild(string _publisher, int _buildIndex)
{
MakePackageMD5File();
- var newVersionConfigPath = StringUtility.Contact("Assets/Resources/VersionConfig", ".asset");
+ var newVersionConfigPath = StringUtility.Concat("Assets/Resources/VersionConfig", ".asset");
var versionName = string.Empty;
var fromVersionConfig = GetVersionConfig(_publisher, out versionName);
var newVersionConfig = ScriptableObject.CreateInstance<VersionConfig>();
@@ -723,7 +723,7 @@
static void SetIconAndSplashImage(string _versionName)
{
var buildTarget = GetBuildTarget();
- var texture = AssetDatabase.LoadAssetAtPath<Texture2D>(StringUtility.Contact("Assets/Editor/Logo/", _versionName, "/Icon.png"));
+ var texture = AssetDatabase.LoadAssetAtPath<Texture2D>(StringUtility.Concat("Assets/Editor/Logo/", _versionName, "/Icon.png"));
var iconSizes = PlayerSettings.GetIconSizesForTargetGroup(buildTarget);
var icons = new Texture2D[iconSizes.Length];
for (int i = 0; i < iconSizes.Length; i++)
@@ -737,7 +737,7 @@
PlayerSettings.SplashScreen.showUnityLogo = false;
PlayerSettings.SplashScreen.unityLogoStyle = PlayerSettings.SplashScreen.UnityLogoStyle.LightOnDark;
- var splashImage = AssetDatabase.LoadAssetAtPath<Sprite>(StringUtility.Contact("Assets/Editor/Logo/", _versionName, "/SplashImage.png"));
+ var splashImage = AssetDatabase.LoadAssetAtPath<Sprite>(StringUtility.Concat("Assets/Editor/Logo/", _versionName, "/SplashImage.png"));
var splashScreenLogo = PlayerSettings.SplashScreenLogo.Create(3, splashImage);
PlayerSettings.SplashScreen.logos = new PlayerSettings.SplashScreenLogo[] { splashScreenLogo };
diff --git a/Assets/Editor/Tool/ClientPackage_Standalone.cs b/Assets/Editor/Tool/ClientPackage_Standalone.cs
index 9b47154..126949b 100644
--- a/Assets/Editor/Tool/ClientPackage_Standalone.cs
+++ b/Assets/Editor/Tool/ClientPackage_Standalone.cs
@@ -126,7 +126,7 @@
}
var relativePath = FileExtersion.GetFileRelativePath(assetPath, item.FullName);
- var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+ var to = StringUtility.Concat(ResourcesPath.Instance.StreamingAssetPath, relativePath);
File.Copy(item.FullName, to, true);
}
@@ -155,7 +155,7 @@
var excludeFileFullNames = new List<string>();
var tempFiles = new List<FileInfo>();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(assetPath, "/hero"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(assetPath, "/hero"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -173,7 +173,7 @@
}
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(assetPath, "/maps"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(assetPath, "/maps"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -191,7 +191,7 @@
}
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(assetPath, "/audio"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(assetPath, "/audio"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -209,7 +209,7 @@
}
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(assetPath, "/uieffect"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(assetPath, "/uieffect"), tempFiles);
foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
@@ -227,7 +227,7 @@
}
tempFiles.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(assetPath, "/ui/sprite"), tempFiles);
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Concat(assetPath, "/ui/sprite"), tempFiles);
foreach (var file in tempFiles)
{
var fileName = Path.GetFileName(file.FullName);
@@ -249,7 +249,7 @@
foreach (var item in fromFiles)
{
var relativePath = FileExtersion.GetFileRelativePath(assetPath, item.FullName);
- var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+ var to = StringUtility.Concat(ResourcesPath.Instance.StreamingAssetPath, relativePath);
var directory = Path.GetDirectoryName(to);
if (!Directory.Exists(directory))
{
@@ -281,7 +281,7 @@
foreach (var item in fromFiles)
{
var relativePath = FileExtersion.GetFileRelativePath(assetPath, item.FullName);
- var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+ var to = StringUtility.Concat(ResourcesPath.Instance.StreamingAssetPath, relativePath);
var directory = Path.GetDirectoryName(to);
if (!Directory.Exists(directory))
{
@@ -309,7 +309,7 @@
if (text.Contains("VERSION_ALTERNATIVE"))
{
var pattern = "VERSION_ALTERNATIVE = \".*\"";
- text = Regex.Replace(text, pattern, StringUtility.Contact("VERSION_ALTERNATIVE = ", "\"", versionConfig.m_Version, "\""));
+ text = Regex.Replace(text, pattern, StringUtility.Concat("VERSION_ALTERNATIVE = ", "\"", versionConfig.m_Version, "\""));
var encoderShouldEmitUTF8Identifier = true;
var throwOnInvalidBytes = false;
@@ -347,7 +347,7 @@
{
try
{
- var newVersionConfigPath = StringUtility.Contact("Assets/Resources/VersionConfig", ".asset");
+ var newVersionConfigPath = StringUtility.Concat("Assets/Resources/VersionConfig", ".asset");
var versionName = string.Empty;
var fromVersionConfig = GetVersionConfig(packageId.ToString(), out versionName);
var newVersionConfig = ScriptableObject.CreateInstance<VersionConfig>();
@@ -416,7 +416,7 @@
static void SetIconAndSplashImage(string _versionName)
{
var buildTarget = BuildTargetGroup.Standalone;
- var texture = AssetDatabase.LoadAssetAtPath<Texture2D>(StringUtility.Contact("Assets/Editor/Logo/", _versionName, "/Icon.png"));
+ var texture = AssetDatabase.LoadAssetAtPath<Texture2D>(StringUtility.Concat("Assets/Editor/Logo/", _versionName, "/Icon.png"));
var iconSizes = PlayerSettings.GetIconSizesForTargetGroup(buildTarget);
var icons = new Texture2D[iconSizes.Length];
for (int i = 0; i < iconSizes.Length; i++)
@@ -430,7 +430,7 @@
PlayerSettings.SplashScreen.showUnityLogo = false;
PlayerSettings.SplashScreen.unityLogoStyle = PlayerSettings.SplashScreen.UnityLogoStyle.LightOnDark;
- var splashImage = AssetDatabase.LoadAssetAtPath<Sprite>(StringUtility.Contact("Assets/Editor/Logo/", _versionName, "/SplashImage.png"));
+ var splashImage = AssetDatabase.LoadAssetAtPath<Sprite>(StringUtility.Concat("Assets/Editor/Logo/", _versionName, "/SplashImage.png"));
var splashScreenLogo = PlayerSettings.SplashScreenLogo.Create(3, splashImage);
PlayerSettings.SplashScreen.logos = new PlayerSettings.SplashScreenLogo[] { splashScreenLogo };
}
diff --git a/Assets/Editor/Tool/SpriteManageTool.cs b/Assets/Editor/Tool/SpriteManageTool.cs
index 3d5832d..c6ce442 100644
--- a/Assets/Editor/Tool/SpriteManageTool.cs
+++ b/Assets/Editor/Tool/SpriteManageTool.cs
@@ -245,8 +245,8 @@
var _detail = _list[i];
var _fatherDetail = _detail.fatherDetail;
GUILayout.BeginHorizontal();
- GUILayout.Label(StringUtility.Contact((i + 1).ToString(), ".", "Path: "));
- var _path = StringUtility.Contact(_detail.fatherDetail, _fatherDetail == string.Empty ? string.Empty : "/", _detail.name);
+ GUILayout.Label(StringUtility.Concat((i + 1).ToString(), ".", "Path: "));
+ var _path = StringUtility.Concat(_detail.fatherDetail, _fatherDetail == string.Empty ? string.Empty : "/", _detail.name);
GUILayout.TextField(_path);
if (_fatherDetail != string.Empty && GUILayout.Button("Goto"))
{
@@ -288,8 +288,8 @@
}
GUILayout.BeginHorizontal();
var _fatherDetail = _detail.fatherDetail;
- GUILayout.Label(StringUtility.Contact((i + 1).ToString(), ".", "Path: "));
- var _path = StringUtility.Contact(_detail.fatherDetail, _fatherDetail == string.Empty ? string.Empty : "/", _detail.name);
+ GUILayout.Label(StringUtility.Concat((i + 1).ToString(), ".", "Path: "));
+ var _path = StringUtility.Concat(_detail.fatherDetail, _fatherDetail == string.Empty ? string.Empty : "/", _detail.name);
GUILayout.TextField(_path);
if (_fatherDetail != string.Empty && GUILayout.Button("Goto"))
{
@@ -425,7 +425,7 @@
var _match = _matchs[_index - 1];
GetRefComponent(_list[_index], _list[_index].Split('\n'), _match.Groups[1].Value);
bool isCancel = EditorUtility.DisplayCancelableProgressBar("鏌ユ壘寮曠敤璧勬簮",
- StringUtility.Contact(_index.ToString(), "/", _list.Count.ToString()), (float)_index / (float)_list.Count);
+ StringUtility.Concat(_index.ToString(), "/", _list.Count.ToString()), (float)_index / (float)_list.Count);
_index++;
if (isCancel || _index >= _list.Count)
{
@@ -447,7 +447,7 @@
_details.Add(_detail);
}
isCancel = EditorUtility.DisplayCancelableProgressBar("鏌ユ壘寮曠敤璧勬簮",
- StringUtility.Contact(_index.ToString(), "/", _keys.Count.ToString()), (float)_index / (float)_keys.Count);
+ StringUtility.Concat(_index.ToString(), "/", _keys.Count.ToString()), (float)_index / (float)_keys.Count);
_index++;
if (isCancel || _index >= _keys.Count)
{
@@ -575,7 +575,7 @@
if (_detail.rectId == _fatherId)
{
var _father = GetFatherDetail(_detail.fatherId);
- return StringUtility.Contact(GetFatherDetail(_detail.fatherId), _father == string.Empty ? string.Empty : "/", _detail.name);
+ return StringUtility.Concat(GetFatherDetail(_detail.fatherId), _father == string.Empty ? string.Empty : "/", _detail.name);
}
}
return string.Empty;
@@ -635,7 +635,7 @@
public static void DisplayExternalPath()
{
GUILayout.BeginHorizontal();
- GUILayout.Label(StringUtility.Contact("鏂囦欢澶硅矾寰勶細", m_ExternalFilePath));
+ GUILayout.Label(StringUtility.Concat("鏂囦欢澶硅矾寰勶細", m_ExternalFilePath));
if (GUILayout.Button("閫夋嫨鏂囦欢鏍硅矾寰�"))
{
var _path = EditorUtility.OpenFolderPanel("鏍硅矾寰�", "", "");
diff --git a/Assets/Editor/Tool/UpdateSpritePackingSetting.cs b/Assets/Editor/Tool/UpdateSpritePackingSetting.cs
index 0cc3ee4..af2be5c 100644
--- a/Assets/Editor/Tool/UpdateSpritePackingSetting.cs
+++ b/Assets/Editor/Tool/UpdateSpritePackingSetting.cs
@@ -26,7 +26,7 @@
foreach (var setting in so.spriteSettings)
{
- var directoryPath = StringUtility.Contact(rootPath, Path.DirectorySeparatorChar.ToString(), setting.folderName);
+ var directoryPath = StringUtility.Concat(rootPath, Path.DirectorySeparatorChar.ToString(), setting.folderName);
if (!Directory.Exists(directoryPath))
{
@@ -79,7 +79,7 @@
count++;
- EditorUtility.DisplayProgressBar(StringUtility.Contact("璁剧疆鍥鹃泦鏍囩:", setting.folderName), file.Name, count / (float)total);
+ EditorUtility.DisplayProgressBar(StringUtility.Concat("璁剧疆鍥鹃泦鏍囩:", setting.folderName), file.Name, count / (float)total);
}
catch (Exception ex)
{
@@ -164,7 +164,7 @@
int index = 0;
foreach (SpriteSettingConfig.SpriteSetting setting in so.spriteSettings)
{
- var directoryPath = StringUtility.Contact(rootPath, Path.DirectorySeparatorChar.ToString(), setting.folderName);
+ var directoryPath = StringUtility.Concat(rootPath, Path.DirectorySeparatorChar.ToString(), setting.folderName);
if (!Directory.Exists(directoryPath))
{
diff --git a/Assets/Editor/Web/NetPkgTool.cs b/Assets/Editor/Web/NetPkgTool.cs
index 3064213..cdb127c 100644
--- a/Assets/Editor/Web/NetPkgTool.cs
+++ b/Assets/Editor/Web/NetPkgTool.cs
@@ -87,7 +87,7 @@
try
{
- contain = Regex.IsMatch(package.name, StringUtility.Contact(".*(", filterNetPkgStr.Replace(" ", "|"), ").*"));
+ contain = Regex.IsMatch(package.name, StringUtility.Concat(".*(", filterNetPkgStr.Replace(" ", "|"), ").*"));
}
catch (System.Exception ex)
{
@@ -216,7 +216,7 @@
}
GUI.skin.button.normal.textColor = professionalSkin ? Color.white : Color.black;
- var showName = StringUtility.Contact(package.time, " ", package.name);
+ var showName = StringUtility.Concat(package.time, " ", package.name);
EditorGUILayout.LabelField(package.socketType == ServerType.B430 ? new GUIContent($"<color=#119911>{showName}</color>") :
(package.socketType == ServerType.MainFight ? new GUIContent($"<color=#9C5E13>{showName}</color>") : new GUIContent(showName)),
new GUIStyle(EditorStyles.label) { richText = true }, GUILayout.Width(260));
diff --git a/Assets/Launch/Common/AssetVersion.cs b/Assets/Launch/Common/AssetVersion.cs
index 3440015..06ff4a5 100644
--- a/Assets/Launch/Common/AssetVersion.cs
+++ b/Assets/Launch/Common/AssetVersion.cs
@@ -56,7 +56,7 @@
//checkList 鐢ㄤ簬澶栭儴妫�鏌ユ枃浠朵笅杞藉悗鏄惁涓�鑷达紝涓嶅寘鍚病鏈夋枃浠剁殑鎯呭喌
public bool CheckLocalFileValid(List<bool> checkList = null)
{
- string path = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, m_RelativePath);
+ string path = StringUtility.Concat(ResourcesPath.Instance.ExternalStorePath, m_RelativePath);
var fileInfo = new FileInfo(path);
if (!fileInfo.Exists)
@@ -92,7 +92,7 @@
// 瀛樺湪鍒欐瘮杈�
public bool CheckLocalFileValid(AssetVersion otherAssetInfo)
{
- string path = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, m_RelativePath);
+ string path = StringUtility.Concat(ResourcesPath.Instance.ExternalStorePath, m_RelativePath);
if (!File.Exists(path))
{
diff --git a/Assets/Launch/Common/DownLoadAndDiscompressTask.cs b/Assets/Launch/Common/DownLoadAndDiscompressTask.cs
index e1d806a..65f2b26 100644
--- a/Assets/Launch/Common/DownLoadAndDiscompressTask.cs
+++ b/Assets/Launch/Common/DownLoadAndDiscompressTask.cs
@@ -74,8 +74,8 @@
for (int i = 0; i < tasks.Count; i++)
{
var assetVersion = tasks[i];
- var remoteURL = StringUtility.Contact(LocalResManager.Instance.versionInfo.GetResourcesURL(VersionConfigEx.Get().branch), LocalResManager.fixPath, "/", assetVersion.relativePath);
- var localURL = StringUtility.Contact(LocalResManager.Instance.ExternalStorePath, assetVersion.relativePath);
+ var remoteURL = StringUtility.Concat(LocalResManager.Instance.versionInfo.GetResourcesURL(VersionConfigEx.Get().branch), LocalResManager.fixPath, "/", assetVersion.relativePath);
+ var localURL = StringUtility.Concat(LocalResManager.Instance.ExternalStorePath, assetVersion.relativePath);
DownloadMgr.Instance.AddTask(new DownloadTask(remoteURL, localURL));
}
diff --git a/Assets/Launch/Common/FileExtersion.cs b/Assets/Launch/Common/FileExtersion.cs
index 0604e01..a59d144 100644
--- a/Assets/Launch/Common/FileExtersion.cs
+++ b/Assets/Launch/Common/FileExtersion.cs
@@ -105,7 +105,7 @@
{
var startIndex = index + 9;
fileName = fileName.Substring(startIndex, fileName.Length - startIndex);
- return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar.ToString(), fileName);
+ return StringUtility.Concat(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar.ToString(), fileName);
}
else
{
diff --git a/Assets/Launch/Launch.cs b/Assets/Launch/Launch.cs
index 16480c8..70c331b 100644
--- a/Assets/Launch/Launch.cs
+++ b/Assets/Launch/Launch.cs
@@ -85,6 +85,7 @@
System.Globalization.CultureInfo.DefaultThreadCurrentCulture = culture;
System.Globalization.CultureInfo.DefaultThreadCurrentUICulture = culture;
System.Net.ServicePointManager.DefaultConnectionLimit = 100;
+ StringUtility.WarmupPool();
#if UNITY_EDITOR
//鍐呯綉涓嬭浇娴嬭瘯
diff --git a/Assets/Launch/Manager/LocalResManager.cs b/Assets/Launch/Manager/LocalResManager.cs
index d46cd85..550556d 100644
--- a/Assets/Launch/Manager/LocalResManager.cs
+++ b/Assets/Launch/Manager/LocalResManager.cs
@@ -236,9 +236,9 @@
{
Sprite sprite = null;
#if UNITY_EDITOR
- if (excludePngs.Contains(StringUtility.Contact(name, ".png")))
+ if (excludePngs.Contains(StringUtility.Concat(name, ".png")))
{
- var path = StringUtility.Contact("Assets/ResourcesOut/BuiltIn/Sprites/", name, ".png");
+ var path = StringUtility.Concat("Assets/ResourcesOut/BuiltIn/Sprites/", name, ".png");
sprite = UnityEditor.AssetDatabase.LoadAssetAtPath<Sprite>(path);
}
else
diff --git a/Assets/Launch/UI/LaunchWins/LaunchExWin.cs b/Assets/Launch/UI/LaunchWins/LaunchExWin.cs
index ebb557b..198100f 100644
--- a/Assets/Launch/UI/LaunchWins/LaunchExWin.cs
+++ b/Assets/Launch/UI/LaunchWins/LaunchExWin.cs
@@ -117,13 +117,13 @@
}
if (ShowCircleView)
{
- m_IosProgressTip.text = StringUtility.Contact(sliderText, " ", ((int)(value * 100)).ToString(), "%");
+ m_IosProgressTip.text = StringUtility.Concat(sliderText, " ", ((int)(value * 100)).ToString(), "%");
//circleImg.Rotate(Vector3.forward, -1800 * Time.deltaTime);
}
else
{
m_TotalProgressSlider.value = value;
- m_StageDescription.text = StringUtility.Contact(sliderText, " ", ((int)(value * 100)).ToString(), "%");
+ m_StageDescription.text = StringUtility.Concat(sliderText, " ", ((int)(value * 100)).ToString(), "%");
}
}
diff --git a/Assets/Launch/Utility/StringUtility.cs b/Assets/Launch/Utility/StringUtility.cs
index 72bd249..de0c656 100644
--- a/Assets/Launch/Utility/StringUtility.cs
+++ b/Assets/Launch/Utility/StringUtility.cs
@@ -2,88 +2,201 @@
using System.Collections;
using System.Text;
using System;
+using System.Collections.Concurrent;
+
+// AI鎻愰啋瀹為檯鍦ㄧ幇浠g紪杈戝櫒涓紝浣庝簬4涓瓧绗︿覆鐨�+ 鎿嶄綔绗︾殑鎬ц兘鍜� string.Concat 鍑犱箮鐩稿悓锛屼細琚櫤鑳戒紭鍖栦负 string.Concat
public class StringUtility
{
public static readonly string[] splitSeparator = new string[] { "|" };
+ // 瀵硅薄姹犳柟妗堬細绾跨▼瀹夊叏鐨凷tringBuilder姹�
+ private static readonly ConcurrentQueue<StringBuilder> _stringBuilderPool = new ConcurrentQueue<StringBuilder>();
+ private const int MAX_POOL_SIZE = 32; // 澧炲姞姹犲ぇ灏忎互閫傚簲楂樺苟鍙�
+ private const int DEFAULT_CAPACITY = 64;
+ private const int SMALL_CAPACITY = 64; // 閫傜敤浜庡皬瑙勬ā鎷兼帴
+ private const int TINY_CAPACITY = 32; // 閫傜敤浜庢瀬灏忚妯℃嫾鎺�
+ private const int MEDIUM_CAPACITY = 128; // 鏂板涓瓑瀹归噺绾у埆
+ private const int LARGE_CAPACITY = 256; // 鏂板澶у閲忕骇鍒�
- // 鏂板锛氫负寰幆璋冪敤鐨勪紭鍖栫増鏈紙澶嶇敤StringBuilder锛�
- [ThreadStatic]
- private static StringBuilder _threadLocalStringBuilder;
-
+
/// <summary>
- /// 鑾峰彇褰撳墠绾跨▼鐨凷tringBuilder
+ /// 鏅鸿兘瀹归噺浼扮畻锛堜紭鍖栫増锛�
/// </summary>
- private static StringBuilder GetThreadLocalStringBuilder()
+ private static int EstimateCapacity(params string[] objects)
{
- if (_threadLocalStringBuilder == null)
+ if (objects == null || objects.Length == 0)
+ return TINY_CAPACITY;
+
+ int totalLength = 0;
+
+ // 鍗曟閬嶅巻璁$畻鎬婚暱搴︼紝鎻愰珮鎬ц兘
+ foreach (string str in objects)
{
- _threadLocalStringBuilder = new StringBuilder();
+ if (str != null)
+ totalLength += str.Length;
}
- return _threadLocalStringBuilder;
+
+ // 鏇寸簿缁嗙殑瀹归噺绛栫暐锛屽噺灏戝唴瀛樻氮璐�
+ if (totalLength <= TINY_CAPACITY)
+ return TINY_CAPACITY;
+ else if (totalLength <= SMALL_CAPACITY)
+ return SMALL_CAPACITY;
+ else if (totalLength <= MEDIUM_CAPACITY)
+ return MEDIUM_CAPACITY;
+ else if (totalLength <= LARGE_CAPACITY)
+ return LARGE_CAPACITY;
+ else
+ // 瀵逛簬瓒呭ぇ瀛楃涓诧紝棰勭暀25%鐨勭紦鍐茬┖闂达紙鍑忓皯鍐呭瓨娴垂锛�
+ return totalLength + (totalLength >> 2);
}
/// <summary>
- /// 鏅鸿兘瀛楃涓叉嫾鎺ユ柟娉曪紝鑷姩閫夋嫨鏈�浼樼瓥鐣�
- /// - 2-4涓瓧绗︿覆锛氱洿鎺ヤ娇鐢� string.Concat() (鏈�楂樻�ц兘)
- /// - 5涓互涓婂瓧绗︿覆锛氫娇鐢ㄧ嚎绋嬫湰鍦� StringBuilder 澶嶇敤 (寰幆浼樺寲)
+ /// 浠庡璞℃睜鑾峰彇StringBuilder
+ /// </summary>
+ private static StringBuilder GetPooledStringBuilder(int capacity = DEFAULT_CAPACITY)
+ {
+ if (_stringBuilderPool.TryDequeue(out StringBuilder sb))
+ {
+ sb.Clear();
+ // 濡傛灉瀹归噺涓嶈冻锛岄噸鏂板垱寤�
+ if (sb.Capacity < capacity)
+ {
+ sb = new StringBuilder(capacity);
+ }
+ return sb;
+ }
+ return new StringBuilder(capacity);
+ }
+
+ /// <summary>
+ /// 灏哠tringBuilder褰掕繕鍒板璞℃睜锛堜紭鍖栫増锛�
+ /// </summary>
+ private static void ReturnToPool(StringBuilder sb)
+ {
+ if (sb == null)
+ return;
+
+ // 瀹归噺杩囧ぇ鎴栬繃闀匡紝涓嶅洖鏀朵互閬垮厤鍐呭瓨闂
+ if (sb.Capacity > 2048 || sb.Length > 1024)
+ {
+ SecureClear(sb);
+ return;
+ }
+
+ // 姹犳湭婊℃椂鎵嶅洖鏀�
+ if (_stringBuilderPool.Count < MAX_POOL_SIZE)
+ {
+ sb.Clear();
+ _stringBuilderPool.Enqueue(sb);
+ }
+ else
+ {
+ // 姹犳弧鏃惰繘琛屽畨鍏ㄦ竻鐞�
+ SecureClear(sb);
+ }
+ }
+
+ /// <summary>
+ /// 瀹夊叏娓呯悊StringBuilder鍐呭锛堥槻姝㈡晱鎰熸暟鎹硠闇诧級
+ /// </summary>
+ private static void SecureClear(StringBuilder sb)
+ {
+ if (sb == null || sb.Length == 0)
+ return;
+
+ // 鍩虹娓呯悊
+ sb.Clear();
+
+ // 瀹夊叏娓呯悊锛氱敤绌哄瓧绗﹁鐩栫紦鍐插尯
+ // #if UNITY_EDITOR || DEVELOPMENT_BUILD
+ // // 浠呭湪寮�鍙戠増鏈腑鎵ц鏇村交搴曠殑娓呯悊锛岄伩鍏嶅奖鍝嶆�ц兘
+ // int originalCapacity = sb.Capacity;
+ // if (originalCapacity <= 1024) // 浠呭灏忓閲廠tringBuilder杩涜瀹夊叏娓呯悊
+ // {
+ // sb.Capacity = originalCapacity;
+ // for (int i = 0; i < originalCapacity; i++)
+ // {
+ // sb.Append('\0');
+ // }
+ // sb.Clear();
+ // }
+ // #endif
+ }
+
+ /// <summary>
+ /// 鏅鸿兘瀛楃涓叉嫾鎺ユ柟娉曪紙浼樺寲鐗堬級锛岃嚜鍔ㄩ�夋嫨鏈�浼樼瓥鐣�
+ /// - 1-4涓瓧绗︿覆锛氱洿鎺ヤ娇鐢� string.Concat() (鏈�楂樻�ц兘)
+ /// - 4-8涓瓧绗︿覆锛氫娇鐢ㄥ璞℃睜 StringBuilder锛屽閲忛鍒嗛厤
+ /// - 9涓互涓婂瓧绗︿覆锛氫娇鐢ㄥ璞℃睜 StringBuilder + 瀹归噺浼扮畻
/// </summary>
public static string Concat(params string[] _objects)
{
+ if (_objects == null || _objects.Length == 0)
+ return string.Empty;
+
// 灏戦噺瀛楃涓茬洿鎺ヤ娇鐢–oncat锛屾�ц兘鏈�浣�
if (_objects.Length <= 4)
{
return string.Concat(_objects);
}
- // 澶ч噺瀛楃涓蹭娇鐢ㄧ嚎绋嬫湰鍦癝tringBuilder锛岄伩鍏嶉噸澶嶅垱寤�
- var sb = GetThreadLocalStringBuilder();
- sb.Clear();
- foreach (string str in _objects)
+ // 涓瓑鏁伴噺瀛楃涓蹭娇鐢ㄧ畝鍗曞閲忕瓥鐣�
+ int estimatedCapacity;
+ if (_objects.Length <= 8)
{
- sb.Append(str);
+ estimatedCapacity = DEFAULT_CAPACITY;
}
- return sb.ToString();
- }
-
- // AI鎻愰啋瀹為檯鍦ㄧ幇浠g紪杈戝櫒涓紝浣庝簬4涓瓧绗︿覆鐨�+ 鎿嶄綔绗︾殑鎬ц兘鍜� string.Concat 鍑犱箮鐩稿悓锛屼細琚櫤鑳戒紭鍖栦负 string.Concat
- // 娣诲姞甯哥敤2涓瓧绗︿覆鎷兼帴鐨勪紭鍖栫増鏈�
- public static string Contact(string str1, string str2)
- {
- return string.Concat(str1, str2);
- }
-
- // 娣诲姞甯哥敤3涓瓧绗︿覆鎷兼帴鐨勪紭鍖栫増鏈�
- public static string Contact(string str1, string str2, string str3)
- {
- return string.Concat(str1, str2, str3);
- }
-
- // 娣诲姞甯哥敤4涓瓧绗︿覆鎷兼帴鐨勪紭鍖栫増鏈�
- public static string Contact(string str1, string str2, string str3, string str4)
- {
- return string.Concat(str1, str2, str3, str4);
- }
-
+ else
+ {
+ // 澶ч噺瀛楃涓叉墠杩涜瀹归噺浼扮畻锛堜紭鍖栨�ц兘锛�
+ estimatedCapacity = EstimateCapacity(_objects);
+ }
-
+ var sb = GetPooledStringBuilder(estimatedCapacity);
+ try
+ {
+ foreach (string str in _objects)
+ {
+ sb.Append(str);
+ }
+ return sb.ToString();
+ }
+ finally
+ {
+ ReturnToPool(sb);
+ }
+ }
public static string FormatSpeed(float speed)
{
if (speed > 1048576f)
{
- return Contact((speed / 1048576f).ToString("f1"), " M/S");
+ return Concat((speed / 1048576f).ToString("f1"), " M/S");
}
else if (speed > 1024f)
{
- return Contact((speed / 1024f).ToString("f1"), " KB/S");
+ return Concat((speed / 1024f).ToString("f1"), " KB/S");
}
else
{
- return Contact(speed.ToString("f1"), " B/S");
+ return Concat(speed.ToString("f1"), " B/S");
}
}
+ /// <summary>
+ /// 棰勭儹瀵硅薄姹狅紙鍦ㄥ簲鐢ㄥ惎鍔ㄦ椂璋冪敤锛�
+ /// </summary>
+ public static void WarmupPool(int count = 4)
+ {
+ // 棰勭儹涓嶅悓瀹归噺鐨凷tringBuilder浠ラ�傚簲涓嶅悓鍦烘櫙
+ for (int i = 0; i < count && _stringBuilderPool.Count < MAX_POOL_SIZE; i++)
+ {
+ _stringBuilderPool.Enqueue(new StringBuilder(DEFAULT_CAPACITY));
+ }
+ }
+
+
+
}
--
Gitblit v1.8.0