此文为热更新学习笔记记录
AB包


- LZ4 比标准压缩程度小,但对于内存的占用相对较小,在使用时无需全部解压(推荐使用)
- ETI 在资源包中不包含资源的类型信息
- FR 重新打包时需要重新构建包和ClearFolders不同,它不会删除不存在的包。
- ITTC 增量构建检查时,忽略类型数的更改
- Append Hash 将文件哈希值附加到资源包名上
- SM 严格模式,如果打包出错,则打包直接失败
- DRB 运行时构建
打包
进过AB打包后,我们发现生成了如下的文件:

其中包含我们的主包文件PC和我们的资源包文件model。
打包完成的资源包以二进制存储
manifest文件为对应资源的配置文件。

加载资源
1 2 3 4 5 6
| var ab= AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/model");
var asset= ab.LoadAsset<GameObject>("Cube"); Instantiate(asset);
|
异步加载资源
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
IEnumerator LoadAbResAsync<T>(string abName, string resName, UnityAction<AssetBundleRequest> callBack) { var ab = AssetBundle.LoadFromFileAsync(Application.streamingAssetsPath + "/model"); yield return ab; var res = ab.assetBundle.LoadAssetAsync<T>(resName); yield return res; callBack.Invoke(res); ab.assetBundle.Unload(false); AssetBundle.UnloadAllAssetBundles(false); }
|
1 2 3 4 5 6
| StartCoroutine(LoadAbResAsync<GameObject>("model", "Cube", a => { Debug.Log("资源加载完成!"); Instantiate(a.asset); }));
|
资源依赖
如果一个资源被打包为ab包,那么这个资源使用的其他资源依赖会被默认打入资源包。