Assets/Editor/Tool/AssetBundleBuildExtersion.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Assets/Editor/Tool/BuildExtersion.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Assets/Editor/Tool/BuildExtersion.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Assets/Editor/Tool/AssetBundleBuildExtersion.cs
@@ -4,75 +4,75 @@ using UnityEditor; using System.IO; public class AssetBundleBuildExtersion { public static void Build(string _output, string _category, BuildAssetBundleOptions _bundleOption, BuildTarget _buildTarget) { var assetBundles = AssetDatabase.GetAllAssetBundleNames(); List<string> targetAssetBundles = new List<string>(); for (int i = 0; i < assetBundles.Length; i++) { var bundleName = assetBundles[i]; if (bundleName.StartsWith(_category)) { targetAssetBundles.Add(bundleName); } } var assets = new List<AssetBundleBuild>(); for (int i = 0; i < targetAssetBundles.Count; i++) { var assetBundleBuild = new AssetBundleBuild(); assetBundleBuild.assetBundleName = targetAssetBundles[i]; assetBundleBuild.assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(targetAssetBundles[i]); assets.Add(assetBundleBuild); } var rootPath = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, _category); var mainFile = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, GetMainFestFileName(_buildTarget)); var mainFileRename = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, _category, "_assetbundle"); var manifest = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, GetMainFestFileName(_buildTarget), ".manifest"); var manifestRename = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, _category, "_assetbundle.manifest"); if (Directory.Exists(rootPath)) { Directory.Delete(rootPath, true); } Directory.CreateDirectory(rootPath); if (File.Exists(mainFileRename)) { File.Delete(mainFileRename); } if (File.Exists(manifestRename)) { File.Delete(manifestRename); } BuildPipeline.BuildAssetBundles(_output, assets.ToArray(), _bundleOption, _buildTarget); File.Move(mainFile, mainFileRename); File.Move(manifest, manifestRename); } static string GetMainFestFileName(BuildTarget _target) { switch (_target) { case BuildTarget.StandaloneWindows: return "standalone"; case BuildTarget.Android: return "android"; case BuildTarget.iOS: return "ios"; default: return string.Empty; } public class AssetBundleBuildExtersion { public static void Build(string _output, string _category, BuildAssetBundleOptions _bundleOption, BuildTarget _buildTarget) { var assetBundles = AssetDatabase.GetAllAssetBundleNames(); List<string> targetAssetBundles = new List<string>(); for (int i = 0; i < assetBundles.Length; i++) { var bundleName = assetBundles[i]; if (bundleName.StartsWith(_category)) { targetAssetBundles.Add(bundleName); } } var assets = new List<AssetBundleBuild>(); for (int i = 0; i < targetAssetBundles.Count; i++) { var assetBundleBuild = new AssetBundleBuild(); assetBundleBuild.assetBundleName = targetAssetBundles[i]; assetBundleBuild.assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(targetAssetBundles[i]); 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, _category, "_assetbundle"); var manifest = StringUtility.Contact(_output, Path.AltDirectorySeparatorChar, GetMainFestFileName(_buildTarget), ".manifest"); var manifestRename = StringUtility.Contact(_output, Path.AltDirectorySeparatorChar, _category, "_assetbundle.manifest"); if (Directory.Exists(rootPath)) { Directory.Delete(rootPath, true); } Directory.CreateDirectory(rootPath); if (File.Exists(mainFileRename)) { File.Delete(mainFileRename); } if (File.Exists(manifestRename)) { File.Delete(manifestRename); } BuildPipeline.BuildAssetBundles(_output, assets.ToArray(), _bundleOption, _buildTarget); File.Move(mainFile, mainFileRename); File.Move(manifest, manifestRename); } static string GetMainFestFileName(BuildTarget _target) { switch (_target) { case BuildTarget.StandaloneWindows: return "standalone"; case BuildTarget.Android: return "android"; case BuildTarget.iOS: return "ios"; default: return string.Empty; } } } Assets/Editor/Tool/BuildExtersion.cs
New file @@ -0,0 +1,257 @@ 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) { UpdateLevelSetting.SetAllLevelAssetBundleName(); ExcuteBuildAsset("maps", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包地图失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildEffect() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { UpdateEffectPrefabSetting.SetAllEffectPrefabAssetBundleName(); ExcuteBuildAsset("effect", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包特效失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildMob() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { UpdateMobSetting.SetAllMobAssetBundleName(); ExcuteBuildAsset("mob", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包NPC模型失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildConfig() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { UpdateScriptableObjectsSetting.SetAllScriptableObjectAssetBundleName(); ExcuteBuildAsset("config", buildParameters); TableTool.ReadAllTxtToBytes(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); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包音效失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildShader() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { UpdateShaderSetting.SetAllShaderAssetBundleName(); ExcuteBuildAsset("graphic", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包shader失败"); Debug.Log(ex); EditorApplication.Exit(1); } } public static void BuildUI() { try { var buildParameters = new BuildParameters(); if (!buildParameters.error) { UpdateUIPrefabSetting.SetAllUIPrefabAssetBundleName(); UpdateUIWindowSetting.SetAllUIWindowAssetBundleName(); UpdateSpriteSetting.SetAllSpriteAssetBundleName(); ExcuteBuildAsset("ui", buildParameters); } else { EditorApplication.Exit(1); } } catch (Exception ex) { Debug.Log("打包ui失败"); 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 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; } } } error = false; } catch (Exception ex) { error = true; Debug.LogException(ex); EditorApplication.Exit(1); } } public string GetWholeOutPutPath() { return StringUtility.Contact(outputPath, "/", buildTarget.ToString().ToLower()); } } } Assets/Editor/Tool/BuildExtersion.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 42af103e31b116e4fb47e0017b546c05 timeCreated: 1533627572 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: