using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Linq; using Ichni; using UnityEditor; using UnityEngine; /// /// AssetBundle 打包工具 /// public class BuildAssetBundle { private static string BuildPrepare() { // 打包AB输出路径 string strABOutPAthDir = string.Empty; // 获取“StreamingAssets”文件夹路径(不一定这个文件夹,可自定义) strABOutPAthDir = Application.streamingAssetsPath + "/ThemeBundles"; // 判断文件夹是否存在,不存在则新建 if (Directory.Exists(strABOutPAthDir) == false) { Directory.CreateDirectory(strABOutPAthDir); } return strABOutPAthDir; } private static void GenerateAbstracts(AssetBundleManifest manifest) { List themeBundles = manifest.GetAllAssetBundles().ToList(); foreach (string bundle in themeBundles) { string uriAbs = Application.streamingAssetsPath + "/ThemeBundles/" + bundle + ".abs"; Debug.Log(uriAbs); if (!ES3.FileExists(uriAbs)) { ThemeBundleAbstract abs = new ThemeBundleAbstract(bundle); ES3.Save("ThemeBundleAbstract", abs, uriAbs); } } } [MenuItem("AssetBundleTools/BuildToWindows64")] public static void BuildToWindows64() { string uri = BuildPrepare() + "/Windows64"; AssetBundleManifest manifestWin64 = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64); GenerateAbstracts(manifestWin64); } [MenuItem("AssetBundleTools/BuildToOSX")] public static void BuildToOSX() { string uri = BuildPrepare() + "/OSX"; AssetBundleManifest manifestOSX = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.StandaloneOSX); GenerateAbstracts(manifestOSX); } [MenuItem("AssetBundleTools/BuildToAndroid")] public static void BuildToAndroid() { string uri = BuildPrepare() + "/Android"; AssetBundleManifest manifestAndroid = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.Android); GenerateAbstracts(manifestAndroid); } [MenuItem("AssetBundleTools/BuildToIOS")] public static void BuildToIOS() { string uri = BuildPrepare() + "/IOS"; AssetBundleManifest manifestIOS = BuildPipeline.BuildAssetBundles(uri, BuildAssetBundleOptions.None, BuildTarget.iOS); GenerateAbstracts(manifestIOS); } }