本文分享Unity中的资源管理-AssetBundle(2)
在上一篇文章中, 我们介绍了Ab的基础知识, 并了解到如何构建Ab, 最后还给出了几种不同的Ab管理方案.
今天我们接着聊聊Ab的加载和卸载.
Ab的使用总的来说比较简单, 前提是我们不操心加载好的Ab和从Ab中加载出来的资材, 但整个资源管理的难点就在于此.
目前我们只是谈论Ab最核心的使用而不涉及到基于此的各种资源管理方案. 这部分会在后面的文章给出.
好了, 下面开始今天的内容.
Ab的加载和使用
基本的加载接口
Unity提供了Ab的同步和异步加载方式. 两者都是十分简单的. 总体遵循: 先加载Ab, 然后从Ab中加载资材, 清理资材, 卸载Ab的流程.
这里以上篇文章打包出来的Ab为例:
同步加载如下:
var ab = AssetBundle.LoadFromFile("Assets/Output/AssetBundle/AllAb/prefab");
var obj = ab.LoadAsset<GameObject>("obj.prefab");
Instantiate(obj);
异步加载如下:
void Start() {
StartCoroutine(LoadAsync());
}
IEnumerator LoadAsync() {
var path = "Assets/Output/AssetBundle/AllAb/prefabs";
var request = AssetBundle.LoadFromFileAsync(path);
yield return request;
var obj = request.assetBundle.LoadAsset<GameObject>("obj.prefab");
Instantiate(obj);
}
上面两种方式都是从本地加载, Unity还提供了从网络加载, 准确的说是从URL加载, 而URL是包括本地的.
从URL加载Ab
URL是统一资源定位符的意思, 支持下面各种协议:
-
http://
-
https://
-
file://(访问本地文件)
-
ftp://(只支持匿名账号)

本文详细介绍了Unity中AssetBundle的加载和卸载过程,包括同步和异步加载,从本地和URL加载Ab的方法。Unity提供多种加载接口,如UnityWebRequestAssetBundle,适用于不同场景。文章还讨论了LZMA和LZ4两种压缩方式的使用和内存管理,强调了资源的加载、使用、卸载顺序,并提到了内存占用和卸载的相关接口。最后,指出Ab内存管理和卸载是难点,并预告了下篇文章将深入探讨Ab的内存占用和分析工具。

1081

被折叠的 条评论
为什么被折叠?



