| 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))  | 
|                 {  | 
|                     UpdateLevelSetting.SetCreateRoleLevel(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)  | 
|             {  | 
|                 UpdateScriptableObjectsSetting.SetAllScriptableObjectAssetBundleName();  | 
|                 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)  | 
|             {  | 
|                 AssetSource.allFromEditor = true;  | 
|                 //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<FileInfo>();  | 
|                 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;  | 
|             }  | 
|         }  | 
|     }  | 
|   | 
| }  |