Unity中的资源管理-AssetBundle(2)

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

本文分享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://(只支持匿名账号)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拂面清风三点水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值