AssetBundle的卸载

要点:

        当场景中的object被移除后,Unity不会自动卸载相关Asset

         Asset卸载清理是特定的时刻触发,也可以手动触发

         在合适的时刻卸载AB很重要,否则有可能导致Asset冗余,也有可能导致Asset丢失引用

AssetBundle.Unload(bool)

         卸载AB对象头信息(header information)

         是否卸载通过此AB实例化的Asset

AssetBundle.Unload(true)

          卸载实例化的Asset,如果其中某些Asset被场景引用,则会出现丢失

          通过这种方式,资源卸载最彻底,完全从内存移除

           即使代码中有引用此资源,也会被移除

           使用场景:

            建议大多数时间使用此接口,避免出现Asset冗余

             在场景切换时调用,以清理旧场景的资源

AssetBundle.Unload(false)

             断开AB与其Asset之间的关联(危险)

             并不会卸载其Asset,所以引用不会丢失,同时Asset还会继续占用内存

              由于AB断开了与其Asset之间的关联,所以再次从AB实例化Asset时,并不会直接返回初始化过的Asset,而是重新实例化,这               就出现了冗余,同样的Asset,内存中出现了两份

               使用场景:

                不建议使用

                在场景与代码中移除相关Asset的引用,执行Unload(false),之后在执行Resources.UnloadUnusedAssets。

                执行Unload(false)后,切换场景(non-additively)。

Resources.UnloadUnusedAssets

               卸载不再被引用的Asset

               如果Asset仍被AssetBundle引用,则不会卸载

                如果Asset被场景引用,则不会被卸载

                如果Asset被代码引用,则不会被卸载

                调用消耗较大,一般建议调用前先调用AssetBundle.Unload接口

                在切换场景(非Addtively),引擎会自动调用

    https://docs.unity3d.com/Manual/AssetBundles-Native.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值