using UnityEngine;
using System.Collections;
using System.IO;
using System.Collections.Generic;
using System;
using UnityEditor;
/// <summary>
/// 创建AssetBundle
/// </summary>
public class CreateAssetBundle : MonoBehaviour
{
//生成到的目录
public static string Build2Path = Application.dataPath + "/BuildABs";
public static BuildTarget target = BuildTarget.iOS;
[MenuItem("CYH_Tools/AB_Packager/Build_2_IPhone")]
public static void BuildiPhoneResource()
{
target = BuildTarget.iOS;
BuildAssetResource(target);
}
[MenuItem("CYH_Tools/AB_Packager/Build_2_Android")]
public static void BuildAndroidResource()
{
target = BuildTarget.Android;
BuildAssetResource(target);
}
[MenuItem("CYH_Tools/AB_Packager/Build_2_Windows")]
public static void BuildWindowsResource()
{
target = BuildTarget.StandaloneWindows;
BuildAssetResource(target);
}
private static void BuildAssetResource(BuildTarget target)
{
//文件已经存在就删除
if (Directory.Exists(Build2Path))
{
Directory.Delete(Build2Path, true);
}
//文件不存在就创建
if (!Directory.Exists(Build2Path))
{
Directory.CreateDirectory(Build2Path);
}
//打包
BuildPipeline.BuildAssetBundles(Build2Path, BuildAssetBundleOptions.None, target);
}
}
然后根据我们需要加载的资源名称,获得所有依赖资源:
string[] dps = mainfest.GetAllDependencies(realName);
AssetBundle[] abs = new AssetBundle[dps.Length];
for (int i = 0; i < dps.Length; i++)
{
string dUrl = Cdn + dps[i];
WWW dwww = WWW.LoadFromCacheOrDownload(dUrl, mainfest.GetAssetBundleHash(dps[i]));
yield return dwww;
abs[i] = dwww.assetBundle;
}
其中realName是想加载的AssetBundle的名字,需要带扩展名。