简介
AssetBundle-browser是一款用于处理AssetBundle的工具
首先在 Window->PackageManager里找到AssetBundle 安装
安装后是这样的一个面板
-
是所有打包的模型
-
打包设置面板
Build Target:选择发布的平台Output Path:输出路径
Clear Folders:构建之前清空文件夹
Copy to StreamingAssets:拷贝至StreamingAssets文件夹
Compression:选择压缩格式
点击Build即可对当前Browser中所有的bundle进行打包,选择路径,即 可在该路径下看到生成的资源文件。
1.一般存储AB包时都要把这两个勾选上
2.拷贝至StreamingAssets这个文件夹中,在加载AB包资源时可以很方便的加载
下面介绍一下在U3D中加载AB包时的一些操作
private void Start()
{
// 同步加载
SyncLoadAB("model", "Cube");
// 异步加载
StartCoroutine(AsyncLoadABRes("model2", "Sphere"));
}
/// <summary>
/// 同步加载
/// </summary>
private void SyncLoadAB(string ABName, string resName)
{
//First 加载 AB包 同一AB包不能同时加载
AssetBundle ab = AssetBundle.LoadFromFile
(Application.streamingAssetsPath + "/"+ABName);
//Second 加载 AB包中的资源
//宜 使用泛型加载
GameObject obj = ab.LoadAsset<GameObject>("resName");
GameObject obj2 = ab.LoadAsset
("resName", typeof(GameObject)) as GameObject;
Instantiate(obj2);
// 卸载AB 包 参数true or false 决定了加载了的资源是否卸载
//所有AB包
//AssetBundle.UnloadAllAssetBundles(true);
//单个AB 包
ab.Unload(true);
}
/// <summary>
/// 异步加载AB包
/// </summary>
IEnumerator AsyncLoadABRes(string ABName,string resName)
{
AssetBundleCreateRequest ab= AssetBundle.LoadFromFileAsync
(Application.streamingAssetsPath + "/" + ABName);
yield return ab;
//异步加载资源
AssetBundleRequest res= ab.assetBundle.LoadAssetAsync
<GameObject>(resName);
Instantiate(res.asset,new Vector3(5,0,0),Quaternion.identity);
yield return res;
}
/* AB包的依赖性 */
/// <summary>
/// 如果加载一个物体,加载时它的材质不和物体在一个包中,
/// 并且材质材质所在的包也没有被加载,那么该物体的材质球将会丢失。
/// 简单来说,就是要加载材质所在的包
/// </summary>
private void Depend()
{
//加载主包
AssetBundle abMain = AssetBundle.LoadFromFile
(Application.streamingAssetsPath + "/PC");
// 加载主包中的固定文件
AssetBundleManifest abManifest = abMain.LoadAsset
<AssetBundleManifest>("AssetBundleManifest");
//从固定文件中得到依赖信息 (依赖包名称)
string[] str = abManifest.GetAllDependencies("model");
}
大概就这些了,以后学到了再补充吧,欢迎更正