unity 如何实现AssetBundle资源管理

Unity技术开发干货 专栏收录该内容
51 篇文章 253 订阅 ¥99.00 ¥19.90

unity实现AssetBundle资源管理

1、最上层是 AssetBundleManager,它提供了一些列的接口,同步和异步的都有。给lua导出的接口不使用泛型。
SetAssetBundleResident
LoadAssetAsync
LoadAssetBundleAsync
UnloadAssetBundle
UnloadUnusedAssetBundle

2、Asset 对应一个资源对象,一个资源加载完毕之后,通过Asset.asset就可以获取到对应的资源。它可以指定是否是引用计数的模式,以及缓存多长时间。

3、Bundle 对应一个AssetBundle。同样可以指定是否使用引用计数的模式,以及缓存时间。之所以要有一个Bundle对象,是因为ab包尚未加载完毕的时候,如果有一个对应的Bundle对象,那么处理取消加载或者重复加载等异常情况要方便管理的多。

4、AssetBundleManager 管理所有的Bundle对象。它会判定哪些ab包引用计数为0了,需要销毁。没用的ab包会统一进行释放。

5、GameObjectPool是处理gameObject的缓存池。加载一个模型的时候,会先判定缓存池中是否有已经实例化好的对象。如果有的话直接使用。没有的话再看看prefab是否已加载,有的话直接实例化。再没有的话,则加载prefab,然后回调。

6、在编辑器下使用 AsssetDatabase.LoadAssetAtPath 加载资源。运行时使用ab包加载资源。这样开发效率比较高。我们现在使用的Unity版本,AssetDatabase没有异步加载资源的接口。这会导致编辑器下加载资源有些卡。所以工程最好放在固态硬盘。

注意事项:

1、需要考虑资源尚未加载完毕,玩家已经被释放的情况。很有可能玩家模型还没来得及加载完毕,

  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页

打赏

PassionY

你的赞同是对我的鼓励

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值