using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.IO; using System; //!!!该文件代码没有被调用 public class BuildExtersion { public static void BuildMap() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { var levelPattern = "001"; var versionsFilePath = Application.dataPath + Path.DirectorySeparatorChar + "Editor/VersionConfigs/Versions.txt"; var lines = File.ReadAllLines(versionsFilePath); for (int i = 2; i < lines.Length; i++) { var line = lines[i]; var lineStrings = line.Split('\t'); if (lineStrings[0] == buildParameters.publisher) { levelPattern = lineStrings[23]; break; } } if (!string.IsNullOrEmpty(levelPattern)) { AssetDatabase.Refresh(); } UpdateLevelSetting.SetAllLevelAssetBundleName(); ExcuteBuildAsset("maps", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包地图失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildEffect() { } public static void BuildMobEffectShader() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { UpdateEffectPrefabSetting.SetAllEffectPrefabAssetBundleName(); UpdateMobSetting.SetAllMobAssetBundleName(); UpdateShaderSetting.SetAllShaderAssetBundleName(); ExcuteBuildAsset("mobeffectshader", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包NPC模型 特效 shader失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildConfig() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { ExcuteBuildAsset("config", buildParameters); TableTool.CopyConfigsToOutPutPath(StringUtility.Contact(buildParameters.GetWholeOutPutPath(), "/config")); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包配置表失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildAudio() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { UpdateAudioSetting.SetAllAudioAssetBundleName(); ExcuteBuildAsset("audio", buildParameters); // UpdateVideoSetting.SetAllVideoAssetBundleName(); // ExcuteBuildAsset("video", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包音效失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildShader() { } public static void BuildUI() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { //CheckFontSwitch.CheckAndReplaceFontSwitch(); UpdateUIPrefabSetting.SetAllUIPrefabAssetBundleName(); UpdateUIWindowSetting.SetAllUIWindowAssetBundleName(); var rechargePattern = 1; var versionsFilePath = Application.dataPath + Path.DirectorySeparatorChar + "Editor/VersionConfigs/Versions.txt"; var lines = File.ReadAllLines(versionsFilePath); for (int i = 2; i < lines.Length; i++) { var line = lines[i]; var lineStrings = line.Split('\t'); if (lineStrings[0] == buildParameters.publisher) { rechargePattern = int.Parse(lineStrings[22]); break; } } // UpdateSpriteSetting.SetRechargeSkin(rechargePattern); AssetDatabase.Refresh(); UpdateSpritePackingSetting.UpdateAllSpritePackingSetting(); UpdateSpriteSetting.SetAllSpriteAssetBundleName(); ExcuteBuildAsset("ui", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包ui失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildBuiltIn() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { var publisher = buildParameters.publisher; BuiltInResourceSetting.SetLaunchBackGround(publisher, buildParameters.buildTarget); BuiltInResourceSetting.SetLoginBackGround(publisher, buildParameters.buildTarget); BuiltInResourceSetting.SetLoginLogo(publisher, buildParameters.buildTarget); UpdateBuiltInSetting.SetBuiltinAssetBundleName(); ExcuteBuildAsset("builtin", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包builtin失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void MakeAssetVersionFile() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { var fileInfoes = new List(); FileExtersion.GetAllDirectoryFileInfos(buildParameters.GetWholeOutPutPath(), fileInfoes); AssetsVersionMaker.WriteAssetsVersionFile(buildParameters.GetWholeOutPutPath(), fileInfoes); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("生成AssetVersion失败"); Debug.Log(ex); EditorApplication.Exit(1); } } private static void ExcuteBuildAsset(string category, BuildParameters @params) { var opt = BuildAssetBundleOptions.None; opt |= BuildAssetBundleOptions.ChunkBasedCompression; opt |= BuildAssetBundleOptions.DeterministicAssetBundle; AssetBundleBuildExtersion.Build(@params.GetWholeOutPutPath(), category, opt, @params.buildTarget); } class BuildParameters { public bool error = false; public string outputPath; public string publisher; public BuildTarget buildTarget; public BuildParameters() { try { var args = Environment.GetCommandLineArgs(); for (int i = 0; i < args.Length; i++) { var arg = args[i]; if (arg.ToLower() == "-outputpath") { outputPath = args[i + 1]; } else if (arg.ToLower() == "-buildtarget") { switch (args[i + 1].ToLower()) { case "android": buildTarget = BuildTarget.Android; break; case "ios": buildTarget = BuildTarget.iOS; break; case "standalone": buildTarget = BuildTarget.StandaloneWindows; break; } } else if (arg.ToLower() == "-publisher") { publisher = args[i + 1]; } } error = false; } catch (Exception ex) { error = true; Debug.LogException(ex); EditorApplication.Exit(1); } } public string GetWholeOutPutPath() { switch (buildTarget) { case BuildTarget.Android: return StringUtility.Contact(outputPath, "/android"); case BuildTarget.iOS: return StringUtility.Contact(outputPath, "/ios"); case BuildTarget.StandaloneWindows: return StringUtility.Contact(outputPath, "/standalone"); default: return string.Empty; } } } }