一、随便创建几个资源并设置AssetBundle名称和Variant名称
一、写个生成AssetBundles的菜单功能
using System.IO;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class AssetsToolEditor : Editor
{
[MenuItem("Assets/BuildAssetBundles", false, 100)]
static void BuildAssetBundles()
{
string outputPath = string.Format("{0}/res", Application.streamingAssetsPath);
Debug.Log(outputPath);
if (!Directory.Exists(outputPath))
Directory.CreateDirectory(outputPath);
BuildPipeline.BuildAssetBundles(outputPath, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.StandaloneWindows64);
}
}
二、测试加载manifest文件
输出的AssetBundles文件, res就是全部资源清单(manifest)
示例:加载并解析res
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour {
void Start () {
StartCoroutine("LoadAssetBundleManifest");
}
IEnumerator LoadAssetBundleManifest()
{
yield return null;
//加载输出目录下面那个不带后缀的文件
string path = string.Format("file://{0}/res/res", Application.streamingAssetsPath);
WWW www = WWW.LoadFromCacheOrDownload(path, 1);
//WWW www = new WWW(path);
while (!www.isDone)
yield return www;
if (!string.IsNullOrEmpty(www.error))
{
Debug.LogError("加载资源失败 " + path + "\n" + www.error);
}
else
{
AssetBundle ab = www.assetBundle;
//提取资源清单
AssetBundleManifest manifest = ab.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
//获取全部资源名称
string[] bundles = manifest.GetAllAssetBundles();
for(int i=0; i<bundles.Length; i++) {
Hash128 hash128 = manifest.GetAssetBundleHash(bundles[i]);
Debug.Log(bundles[i] + " ; hash="+hash128.ToString());
//获取所有依赖资源(包括间接依赖的资源)
//string[] dep_bundles = manifest.GetAllDependencies(bundles[i]);
//仅获取直接依赖的资源(即,不包括间接依赖的资源)
string[] dep_bundles = manifest.GetDirectDependencies(bundles[i]);
for(int j=0; j<dep_bundles.Length; j++) {
Debug.Log(" --"+dep_bundles[j]);
}
}
//获取所有设置了Variant的资源
Debug.Log("*** GetAllAssetBundlesWithVariant ***");
bundles = manifest.GetAllAssetBundlesWithVariant();
for(int i=0; i<bundles.Length; i++) {
Debug.Log(bundles[i]);
}
ab.Unload(false);//释放镜像资源
}
}
}
运行时断点查看
全部资源
依赖资源
日志