| | |
| | | field = field.Replace(" ", "");
|
| | | if (type.Contains("Dictionary<int, int[][]>"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = ConfigParse.ParseIntArray2Dict(tables", "[", index, "].Replace(\"(\", \"[\").Replace(\")\", \"]\")); ");
|
| | | return StringUtility.Concat(field, " = ConfigParse.ParseIntArray2Dict(tables", "[", index.ToString(), "].Replace(\"(\", \"[\").Replace(\")\", \"]\")); ");
|
| | | }
|
| | | else if (type.Contains("int[][]"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = JsonMapper.ToObject<int[][]>(tables", "[", index, "].Replace(\"(\", \"[\").Replace(\")\", \"]\")); ");
|
| | | return StringUtility.Concat(field, " = JsonMapper.ToObject<int[][]>(tables", "[", index.ToString(), "].Replace(\"(\", \"[\").Replace(\")\", \"]\")); ");
|
| | | }
|
| | | else if (type.Contains("Dictionary<int, int>"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = ConfigParse.ParseIntDict(tables", "[", index, "]); ");
|
| | | return StringUtility.Concat(field, " = ConfigParse.ParseIntDict(tables", "[", index.ToString(), "]); ");
|
| | | }
|
| | | else if (type.Contains("Dictionary<int, int[]>"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = ConfigParse.ParseIntArrayDict(tables", "[", index, "]); ");
|
| | | return StringUtility.Concat(field, " = ConfigParse.ParseIntArrayDict(tables", "[", index.ToString(), "]); ");
|
| | | }
|
| | | else if (type.Contains("float[][]"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = JsonMapper.ToObject<float[][]>(tables", "[", index, "].Replace(\"(\", \"[\").Replace(\")\", \"]\")); ");
|
| | | return StringUtility.Concat(field, " = JsonMapper.ToObject<float[][]>(tables", "[", index.ToString(), "].Replace(\"(\", \"[\").Replace(\")\", \"]\")); ");
|
| | | }
|
| | | else if (type.Contains("int[]"))
|
| | | {
|
| | | var line0 = StringUtility.Contact("if (tables", "[", index, "].Contains(\"[\"))\n");
|
| | | var line0 = StringUtility.Contact("if (tables", "[", index.ToString(), "].Contains(\"[\"))\n");
|
| | | var line0_1 = StringUtility.Contact(retract3, "{\n");
|
| | | var line0_2 = StringUtility.Contact(retract4, field, " = JsonMapper.ToObject<int[]>(tables", "[", index, "]);\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 line1 = StringUtility.Contact(retract4, "string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract4, field, " = ", "new int", "[", field, "StringArray.Length]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract4, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\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 line5 = StringUtility.Contact(retract5, " int.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\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, "}");
|
| | |
|
| | | return StringUtility.Contact(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6);
|
| | | return StringUtility.Concat(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6);
|
| | | }
|
| | | else if (type.Contains("Int2[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Int2", "[", field, "StringArray.Length]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | 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 line5 = StringUtility.Contact(retract4, " Int2.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line5 = StringUtility.Concat(retract4, " Int2.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6);
|
| | | return StringUtility.Concat(line1, line2, line3, line4, line5, line6);
|
| | | }
|
| | | else if (type.Contains("Int3[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Int3", "[", field, "StringArray.Length]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | 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 line5 = StringUtility.Contact(retract4, " Int3.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line5 = StringUtility.Concat(retract4, " Int3.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6);
|
| | | return StringUtility.Concat(line1, line2, line3, line4, line5, line6);
|
| | | }
|
| | | else if (type.Contains("float[]"))
|
| | | {
|
| | | var line0 = StringUtility.Contact("if (tables", "[", index, "].Contains(\"[\"))\n");
|
| | | var line0 = StringUtility.Contact("if (tables", "[", index.ToString(), "].Contains(\"[\"))\n");
|
| | | var line0_1 = StringUtility.Contact(retract3, "{\n");
|
| | | var line0_2 = StringUtility.Contact(retract4, field, " = JsonMapper.ToObject<float[]>(tables", "[", index, "]);\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 line1 = StringUtility.Contact(retract4, "string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract4, field, " = ", "new float", "[", field, "StringArray.Length", "]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract4, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\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 line5 = StringUtility.Contact(retract5, " float.TryParse(", field, "StringArray", "[i]", ",", "out ", field, "[i]", ")", ";", "\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, "}");
|
| | |
|
| | | return StringUtility.Contact(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6);
|
| | | return StringUtility.Concat(line0, line0_1, line0_2, line0_3, line0_4, line0_5, line1, line2, line3, line4, line5, line6, line0_6);
|
| | | }
|
| | | else if (type.Contains("string[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact(field, " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);");
|
| | | var line1 = StringUtility.Concat(field, " = ", "tables", "[", index.ToString(), "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);");
|
| | | return line1;
|
| | | }
|
| | | else if (type.Contains("Vector3[]"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("string[] ", field, "StringArray", " = ", "tables", "[", index, "]", ".Trim().Split(StringUtility.splitSeparator,StringSplitOptions.RemoveEmptyEntries);", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, field, " = ", "new Vector3", "[", field, "StringArray.Length", "]", ";", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, "for (int i=0;i<", field, "StringArray", ".Length", ";", "i++", ")", "\n");
|
| | | 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 line5 = StringUtility.Contact(retract4, field, "[i]", "=", field, "StringArray", "[i]", ".Vector3Parse()", ";", "\n");
|
| | | var line5 = StringUtility.Concat(retract4, field, "[i]", "=", field, "StringArray", "[i]", ".Vector3Parse()", ";", "\n");
|
| | | var line6 = StringUtility.Contact(retract3, "}");
|
| | |
|
| | | return StringUtility.Contact(line1, line2, line3, line4, line5, line6);
|
| | | return StringUtility.Concat(line1, line2, line3, line4, line5, line6);
|
| | | }
|
| | | else if (type.Contains("int"))
|
| | | {
|
| | | return StringUtility.Contact("int.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | return StringUtility.Concat("int.TryParse(tables", "[", index.ToString(), "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("long"))
|
| | | {
|
| | | return StringUtility.Contact("long.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | return StringUtility.Concat("long.TryParse(tables", "[", index.ToString(), "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("float"))
|
| | | {
|
| | | return StringUtility.Contact("float.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | return StringUtility.Concat("float.TryParse(tables", "[", index.ToString(), "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("string"))
|
| | | {
|
| | | return StringUtility.Contact(field, " = ", "tables", "[", index, "]", ";");
|
| | | return StringUtility.Concat(field, " = ", "tables", "[", index.ToString(), "]", ";");
|
| | | }
|
| | | else if (type.Contains("Vector3"))
|
| | | {
|
| | | return StringUtility.Contact(field, "=", "tables", "[", index, "]", ".Vector3Parse()", ";");
|
| | | return StringUtility.Concat(field, "=", "tables", "[", index.ToString(), "]", ".Vector3Parse()", ";");
|
| | | }
|
| | | else if (type.Contains("bool"))
|
| | | {
|
| | | var line1 = StringUtility.Contact("var ", field, "Temp", " = 0", ";", "\n");
|
| | | var line2 = StringUtility.Contact(retract3, "int.TryParse(tables", "[", index, "]", ",", "out ", field, "Temp", ")", "; ", "\n");
|
| | | var line3 = StringUtility.Contact(retract3, field, "=", field, "Temp", "!=0", ";");
|
| | | 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);
|
| | | }
|
| | | else if (type.Contains("Int2"))
|
| | | {
|
| | | return StringUtility.Contact("Int2.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | return StringUtility.Concat("Int2.TryParse(tables", "[", index.ToString(), "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else if (type.Contains("Int3"))
|
| | | {
|
| | | return StringUtility.Contact("Int3.TryParse(tables", "[", index, "]", ",", "out ", field, ")", "; ");
|
| | | return StringUtility.Concat("Int3.TryParse(tables", "[", index.ToString(), "]", ",", "out ", field, ")", "; ");
|
| | | }
|
| | | else
|
| | | {
|
| | |
| | | assets.Add(assetBundleBuild);
|
| | | }
|
| | |
|
| | | var rootPath = StringUtility.Contact(output, Path.AltDirectorySeparatorChar, category);
|
| | | var mainFile = StringUtility.Contact(output, Path.AltDirectorySeparatorChar, GetMainFestFileName(buildTarget));//改名字前
|
| | | var mainFileRename = StringUtility.Contact(output, Path.AltDirectorySeparatorChar, AssetVersionUtility.EncodeFileName(category), "_assetbundle");//改名字后
|
| | | var manifest = StringUtility.Contact(output, Path.AltDirectorySeparatorChar, GetMainFestFileName(buildTarget), ".manifest");
|
| | | var manifestRename = StringUtility.Contact(output, Path.AltDirectorySeparatorChar, AssetVersionUtility.EncodeFileName(category), "_assetbundle.manifest");
|
| | | 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");
|
| | |
|
| | | if (rebuild && Directory.Exists(rootPath))
|
| | | Directory.Delete(rootPath, true);
|
| | |
| | | fileSize = fileInfo.Length;
|
| | | md5 = FileExtersion.GetMD5HashFromFile(fileInfo.FullName);
|
| | |
|
| | | lines.Add(StringUtility.Contact(relativePath, "\t", extersion, "\t", fileSize, "\t", md5));
|
| | | lines.Add(StringUtility.Concat(relativePath, "\t", extersion, "\t", fileSize.ToString(), "\t", md5));
|
| | | }
|
| | |
|
| | | var assetVersionFile = StringUtility.Contact(Application.dataPath, "/Resources/AssetsVersionCmp.txt");
|
| | |
| | | fileSize = fileInfo.Length;
|
| | | md5 = FileExtersion.GetMD5HashFromFile(fileInfo.FullName);
|
| | |
|
| | | lines.Add(StringUtility.Contact(relativePath, "\t", extersion, "\t", fileSize, "\t", md5));
|
| | | lines.Add(StringUtility.Concat(relativePath, "\t", extersion, "\t", fileSize.ToString(), "\t", md5));
|
| | | }
|
| | |
|
| | | var assetVersionFile = StringUtility.Contact(_path, Path.DirectorySeparatorChar, "AssetsVersion.txt");
|
| | | var assetVersionFile = StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "AssetsVersion.txt");
|
| | | if (File.Exists(assetVersionFile))
|
| | | {
|
| | | File.Delete(assetVersionFile);
|
| | | }
|
| | |
|
| | | File.WriteAllText(StringUtility.Contact(_path, Path.DirectorySeparatorChar, "AssetsVersion.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
|
| | | File.WriteAllText(StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "AssetsVersion.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | fileSize = fileInfo.Length;
|
| | | md5 = FileExtersion.GetMD5HashFromFile(fileInfo.FullName);
|
| | |
|
| | | lines.Add(StringUtility.Contact(relativePath, "\t", extersion, "\t", fileSize, "\t", md5));
|
| | | lines.Add(StringUtility.Concat(relativePath, "\t", extersion, "\t", fileSize.ToString(), "\t", md5));
|
| | | }
|
| | |
|
| | | var assetVersionFile = StringUtility.Contact(_path, Path.DirectorySeparatorChar, "logicbytes.txt");
|
| | | var assetVersionFile = StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "logicbytes.txt");
|
| | | if (File.Exists(assetVersionFile))
|
| | | {
|
| | | File.Delete(assetVersionFile);
|
| | | }
|
| | |
|
| | | File.WriteAllText(StringUtility.Contact(_path, Path.DirectorySeparatorChar, "logicbytes.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
|
| | | File.WriteAllText(StringUtility.Contact(_path, Path.DirectorySeparatorChar.ToString(), "logicbytes.txt"), string.Join(FileExtersion.lineSplit, lines.ToArray()));
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | 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, "Resources/Config/AuditTime.txt");
|
| | | var auditTimeFile = StringUtility.Contact(Application.dataPath, Path.DirectorySeparatorChar.ToString(), "Resources/Config/AuditTime.txt");
|
| | | if (File.Exists(auditTimeFile))
|
| | | {
|
| | | File.Delete(auditTimeFile);
|
| | |
| | | string channelSdkPath;
|
| | | string copySdkFile;
|
| | |
|
| | | channelSdkPath = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/", variant);
|
| | | channelSdkPath = StringUtility.Concat(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/", variant);
|
| | | copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/AndroidManifest.xml");
|
| | | File.Copy(copySdkFile, MANIFEST_PATH);
|
| | | copySdkFile = StringUtility.Contact(_sdkPath, "/Channel/Android/", versionConfig.sdkFileName, "/baseProjectTemplate.gradle");
|
| | |
| | |
|
| | | if (_development)
|
| | | {
|
| | | var apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex, "_development.apk");
|
| | | var apkName = StringUtility.Concat(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex.ToString(), "_development.apk");
|
| | | BuildPipeline.BuildPlayer(baseLevels, apkName, BuildTarget.Android, BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging);
|
| | | }
|
| | | else
|
| | |
| | | if (EditorUserBuildSettings.buildAppBundle)
|
| | | {
|
| | | Debug.Log("勾选了 Build App Bundle (Google Play) 打包aab");
|
| | | apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex, ".aab");
|
| | | apkName = StringUtility.Concat(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex.ToString(), ".aab");
|
| | | }
|
| | | else
|
| | | {
|
| | | Debug.Log("没有勾选 Build App Bundle (Google Play) 打包apk");
|
| | | apkName = StringUtility.Contact(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex, ".apk");
|
| | | apkName = StringUtility.Concat(_output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", _buildIndex.ToString(), ".apk");
|
| | | }
|
| | | BuildPipeline.BuildPlayer(baseLevels, apkName, BuildTarget.Android, BuildOptions.None);
|
| | | }
|
| | |
| | | |
| | | if (development) |
| | | { |
| | | var name = StringUtility.Contact(output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", buildIndex, "_development.exe"); |
| | | var name = StringUtility.Concat(output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", buildIndex.ToString(), "_development.exe"); |
| | | BuildPipeline.BuildPlayer(baseLevels, name, BuildTarget.StandaloneWindows, BuildOptions.Development | BuildOptions.ConnectWithProfiler | BuildOptions.AllowDebugging); |
| | | } |
| | | else |
| | | { |
| | | var name = StringUtility.Contact(output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", buildIndex, ".exe"); |
| | | var name = StringUtility.Concat(output, "/", versionName, "_", versionConfig.clientPackageFlag, "_v", versionConfig.m_Version, "_", buildIndex.ToString(), ".exe"); |
| | | BuildPipeline.BuildPlayer(baseLevels, name, BuildTarget.StandaloneWindows, BuildOptions.None); |
| | | } |
| | | } |
| | |
| | | var _detail = _list[i];
|
| | | var _fatherDetail = _detail.fatherDetail;
|
| | | GUILayout.BeginHorizontal();
|
| | | GUILayout.Label(StringUtility.Contact(i + 1, ".", "Path: "));
|
| | | GUILayout.Label(StringUtility.Contact((i + 1).ToString(), ".", "Path: "));
|
| | | var _path = StringUtility.Contact(_detail.fatherDetail, _fatherDetail == string.Empty ? string.Empty : "/", _detail.name);
|
| | | GUILayout.TextField(_path);
|
| | | if (_fatherDetail != string.Empty && GUILayout.Button("Goto"))
|
| | |
| | | }
|
| | | GUILayout.BeginHorizontal();
|
| | | var _fatherDetail = _detail.fatherDetail;
|
| | | GUILayout.Label(StringUtility.Contact(i + 1, ".", "Path: "));
|
| | | GUILayout.Label(StringUtility.Contact((i + 1).ToString(), ".", "Path: "));
|
| | | var _path = StringUtility.Contact(_detail.fatherDetail, _fatherDetail == string.Empty ? string.Empty : "/", _detail.name);
|
| | | GUILayout.TextField(_path);
|
| | | if (_fatherDetail != string.Empty && GUILayout.Button("Goto"))
|
| | |
| | | var _match = _matchs[_index - 1];
|
| | | GetRefComponent(_list[_index], _list[_index].Split('\n'), _match.Groups[1].Value);
|
| | | bool isCancel = EditorUtility.DisplayCancelableProgressBar("查找引用资源",
|
| | | StringUtility.Contact(_index, "/", _list.Count), (float)_index / (float)_list.Count);
|
| | | StringUtility.Contact(_index.ToString(), "/", _list.Count.ToString()), (float)_index / (float)_list.Count);
|
| | | _index++;
|
| | | if (isCancel || _index >= _list.Count)
|
| | | {
|
| | |
| | | _details.Add(_detail);
|
| | | }
|
| | | isCancel = EditorUtility.DisplayCancelableProgressBar("查找引用资源",
|
| | | StringUtility.Contact(_index, "/", _keys.Count), (float)_index / (float)_keys.Count);
|
| | | StringUtility.Contact(_index.ToString(), "/", _keys.Count.ToString()), (float)_index / (float)_keys.Count);
|
| | | _index++;
|
| | | if (isCancel || _index >= _keys.Count)
|
| | | {
|
| | |
| | |
|
| | | foreach (var setting in so.spriteSettings)
|
| | | {
|
| | | var directoryPath = StringUtility.Contact(rootPath, Path.DirectorySeparatorChar, setting.folderName);
|
| | | var directoryPath = StringUtility.Contact(rootPath, Path.DirectorySeparatorChar.ToString(), setting.folderName);
|
| | |
|
| | | if (!Directory.Exists(directoryPath))
|
| | | {
|
| | |
| | | int index = 0;
|
| | | foreach (SpriteSettingConfig.SpriteSetting setting in so.spriteSettings)
|
| | | {
|
| | | var directoryPath = StringUtility.Contact(rootPath, Path.DirectorySeparatorChar, setting.folderName);
|
| | | var directoryPath = StringUtility.Contact(rootPath, Path.DirectorySeparatorChar.ToString(), setting.folderName);
|
| | |
|
| | | if (!Directory.Exists(directoryPath))
|
| | | {
|
| | |
| | | { |
| | | var startIndex = index + 9; |
| | | fileName = fileName.Substring(startIndex, fileName.Length - startIndex); |
| | | return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar, fileName); |
| | | return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar.ToString(), fileName); |
| | | } |
| | | else |
| | | { |
| | |
| | | fileName = fileName.Substring(0, index); |
| | | } |
| | | |
| | | return StringUtility.Contact(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar, _version, "_version_", fileName); |
| | | return StringUtility.Concat(Path.GetDirectoryName(_fullName), Path.DirectorySeparatorChar.ToString(), _version.ToString(), "_version_", fileName); |
| | | } |
| | | |
| | | public static void DirectoryCopy(string _from, string _to) |
| | |
| | | m_IosProgressContainer.gameObject.SetActive(false); |
| | | |
| | | //打包版本 + 功能版本 + 语言ID |
| | | m_Version.text = StringUtility.Contact(VersionConfigEx.Get().version, "_", VersionConfigEx.Get().buildIndex, |
| | | m_Version.text = StringUtility.Concat(VersionConfigEx.Get().version, "_", VersionConfigEx.Get().buildIndex.ToString(), |
| | | "_", InitialFunctionConfig.Get("version").Numerical1, " ", LocalResManager.Id); |
| | | } |
| | | |
| | |
| | | } |
| | | if (ShowCircleView) |
| | | { |
| | | m_IosProgressTip.text = StringUtility.Contact(sliderText, " ", (int)(value * 100), "%"); |
| | | m_IosProgressTip.text = StringUtility.Contact(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), "%"); |
| | | m_StageDescription.text = StringUtility.Contact(sliderText, " ", ((int)(value * 100)).ToString(), "%"); |
| | | } |
| | | |
| | | } |
| | |
| | | using UnityEngine; |
| | | using UnityEngine; |
| | | using System.Collections; |
| | | using System.Text; |
| | | using System; |
| | | |
| | | public class StringUtility |
| | | { |
| | | public static string[] splitSeparator = new string[] { "|" }; |
| | | public static readonly string[] splitSeparator = new string[] { "|" }; |
| | | |
| | | private static StringBuilder s_CacheStringBuilder = new StringBuilder(); |
| | | |
| | | static object lockObject = new object(); |
| | | // 新增:为循环调用的优化版本(复用StringBuilder) |
| | | [ThreadStatic] |
| | | private static StringBuilder _threadLocalStringBuilder; |
| | | |
| | | public static string Contact(params object[] _objects) |
| | | /// <summary> |
| | | /// 获取当前线程的StringBuilder |
| | | /// </summary> |
| | | private static StringBuilder GetThreadLocalStringBuilder() |
| | | { |
| | | lock (lockObject) |
| | | if (_threadLocalStringBuilder == null) |
| | | { |
| | | s_CacheStringBuilder.Remove(0, s_CacheStringBuilder.Length); |
| | | for (int i = 0; i < _objects.Length; ++i) |
| | | _threadLocalStringBuilder = new StringBuilder(); |
| | | } |
| | | return _threadLocalStringBuilder; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 智能字符串拼接方法,自动选择最优策略 |
| | | /// - 2-4个字符串:直接使用 string.Concat() (最高性能) |
| | | /// - 5个以上字符串:使用线程本地 StringBuilder 复用 (循环优化) |
| | | /// </summary> |
| | | public static string Concat(params string[] _objects) |
| | | { |
| | | if (_objects[i] != null) |
| | | // 少量字符串直接使用Concat,性能最佳 |
| | | if (_objects.Length <= 4) |
| | | { |
| | | s_CacheStringBuilder.Append(_objects[i]); |
| | | return string.Concat(_objects); |
| | | } |
| | | |
| | | // 大量字符串使用线程本地StringBuilder,避免重复创建 |
| | | var sb = GetThreadLocalStringBuilder(); |
| | | sb.Clear(); |
| | | foreach (string str in _objects) |
| | | { |
| | | sb.Append(str); |
| | | } |
| | | return s_CacheStringBuilder.ToString(); |
| | | return sb.ToString(); |
| | | } |
| | | |
| | | // AI提醒实际在现代编辑器中,低于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); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | public static string FormatSpeed(float speed) |
| | | { |
| | | if (speed > 1048576f) |
| | | { |
| | | return StringUtility.Contact((speed / 1048576f).ToString("f1"), " M/S"); |
| | | return Contact((speed / 1048576f).ToString("f1"), " M/S"); |
| | | } |
| | | else if (speed > 1024f) |
| | | { |
| | | return StringUtility.Contact((speed / 1024f).ToString("f1"), " KB/S"); |
| | | return Contact((speed / 1024f).ToString("f1"), " KB/S"); |
| | | } |
| | | else |
| | | { |
| | | return StringUtility.Contact(speed.ToString("f1"), " B/S"); |
| | | }; |
| | | return Contact(speed.ToString("f1"), " B/S"); |
| | | } |
| | | } |
| | | |
| | | } |