关于AssetBundle的卸载

本文探讨了Unity中AssetBundle的卸载,包括AssetBundle.Unload的两种模式及其影响,详细解释了不同卸载策略,如暗黑血统的策略和当前项目中采用的策略,分析了各自优缺点。总结了资源回收及时性和内存占用的权衡,并提到了Addressable Assets作为潜在解决方案。
摘要由CSDN通过智能技术生成

关于AssetBundle的卸载

又坐了一天月子,继续写文章找状态。

本文是关于 卸载AssetBundle 的一些知识点。

下图是一个最简单的从 AssetBundle 加载 Asset实例化 的流程:

这里的 Bundle 在加载完 资源A 后就没用了,我们可以通过 AssetBundle.Unload(false) 把它卸掉,只保留住 资源A

如果 资源A 也没用了,我们可以通过 Destroy 接口或者 Resources.UnloadAsset 接口销毁它。

题外话,我们需要注意一下 Resources.UnloadAsset 的应用场合:

This function can only be called on Assets that are stored on disk.

The referenced asset (assetToUnload) will be unloaded from memory. The object will become invalid and can’t be loaded back from disk. Any subsequently loaded Scenes or assets that reference the asset on disk will cause a new instance of the object to be loaded from disk. This new instance will not be connected to the previously unloaded object.

UWA 也有相关的回答:

Resources.UnloadAsset仅能释放非GameObject和Component的资源,比如Texture、Mesh等真正的资源。对于由Prefab加载出来的Object或Component,则不能通过该函数来进行释放。

好了,回到上图。

上图描述的场景过于简单,实际项目中,资源A 可能依赖 其他资源,并且 其他资源 又被打进 不同的Bundle 中,如下图:

这个时候,卸载 AssetBundle 就需要一定的 策略

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值