遇到来回切换bundle,报错

  • Creator 版本: 3.6.3
  • 目标平台: 360极速浏览器
  • 重现方式:我有5个bundle了,因为包大,想在切换的时候释放掉旧的,如果切回来重新assetManager.loadBundle。现在如果切换到不同的bundle没有问题,但切换回旧的就有问题,例如A->B->A,做了个demo,没报错。逻辑用到项目里就报错了,每个bundle,每次登录都是没问题的。bundle不会共用。
  • 首个报错:

找到问题了,就是预制体里有一些默认的静态图片在bundle里,第二次的时候会报错,为什么,我先读取的bundle,再加载预制体的,附上demo。assets.zip (509.1 KB)

有人能说明一下吗,因为把静态图取消掉,项目还是报这个错

用360的浏览器?

应该是之前实例出的预制体节点没有销毁吧。看看是不是有对象池之类的。

是的,360极速

展示的预制体是不做对象池的,绑定的图片也不做,

这个报错就是资源找不到报的错,updateUV is null,资源被释放了。

去查资源引用有没有混用的地方。有没有把正在用的资源释放了

你的prefab在resources bundle 中,图片资源在其他bundle中, 当第一次加载完成后,prefab未被释放一直处于已完成加载状态,所以第二次加载prefab不会触发加载引用的资源,你释放了图片所在的bundle,assetManager.loadBundle只会加载bundle对象,不会加载资源,你需要手动加载prefab引用的资源

加载prefab前手动释放一下prefab

不建议跨bundle静态引用资源,除非你能保证prefab和引用的资源能同时释放,或者被引用的资源不被释放

是要释放预制体,不然会报错。