AssetBundle.Unload(false/true)

使用中产生了疑惑,实验了一下

   
   SkeletonDataAsset skeleton = null;
   // 自己写的一个类,作用是加载AB包
   HttpRequest.Instance.GetAssetBundle(url1, (ab) =>
   {
       skeleton = ab.LoadAsset<SkeletonDataAsset>("chaifen_SkeletonData");
       ab.Unload(false);
       Debug.Log(skeleton); // 结果不为空
   });
   

像上面这样Unload(false),我的debug出来skeleton不会为空,但是如果Unload(true)

   SkeletonDataAsset skeleton = null;
   // 自己写的一个类,作用是加载AB包
   HttpRequest.Instance.GetAssetBundle(url1, (ab) =>
   {
       skeleton = ab.LoadAsset<SkeletonDataAsset>("chaifen_SkeletonData");
       ab.Unload(true);
       Debug.Log(skeleton); // 结果为null
   });
   

所以我的结论是Unload(true)时,会将从包体内加载出来的临时文件也卸载掉,比如上面的skeleton ,这样我拿到的值一直是空
如果我在卸载之前就使用这个skeleton ,如下

   SkeletonDataAsset skeleton = null;
   // 自己写的一个类,作用是加载AB包
   HttpRequest.Instance.GetAssetBundle(url1, (ab) =>
   {
       skeleton = ab.LoadAsset<SkeletonDataAsset>("chaifen_SkeletonData");
       // 将skeleton用掉
       SkeletonGraphic.NewSkeletonGraphicGameObject(skeleton, loading.transform, material);
       ab.Unload(true);
       Debug.Log(skeleton); // 结果为null
   });  

这样虽然我的动画能够被创建,但是因为material和贴图等被卸载掉了,所以动画还能动但是失去了贴图
一般使用Unload(false)即可,Unload(true)谨慎使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值