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);
}
}