怎么解决远程Bundle里的预制体脚本丢失问题

你创建一个新的bundle,一个新的空预设体,一个新的脚本,然后绑定,构建之后看看打出来的bundle文件夹,里面的json都看看有什么问题没有

不需要动态热更脚本,是打算整个Bundle包热更掉

这个验证过了,远程Bundle包里是有脚本的,因为我把本地Bundle的同名脚本删除,照样能跑而且正常了

有测试远程包的脚本下载下来了吗

下载下来了

那你加一下日志查一下为什么没有把组件挂上去

所以问题是:为什么会丢失脚本?

现在的问题是,
远程Bundle的脚本import其他bundle的脚本
其他bundle的脚本import远程bundle的脚本
都import不了
因为原先import是按照本地路径写的,现在远程Bundle里脚本路径发生变化了

@dumganhar 麻烦帮忙看看

我理解不了,即使import是本地路径,构建的时候,也会根据引用关联起来的,没有demo吗 :rofl:

  1. 检查有没有同名脚本(包括脚本名不同但是 ccclass 相同的)
  2. 检查打包后的远程 bundle 预制体内的组件脚本 uuid 和引用的脚本 uuid 是否一致
  3. 检查脚本注册过程是否有错误,loadBundle 之后实例化预制体之前检查对应的 ccclass 是否注册
  4. 断点实例化预制体过程 component 为空的情况调试

远程的脚本必须在一个bundle里面,不能引用其他bundle。不只是脚本,资源也不能用其他的bundle里面的

可以使用,但是必须保证使用的资源所在bundle已经被加载完成

1赞

这些都已经解决了,现在就是原先Bundle里脚本import的路径是相对于本地的
远程加载bundle后就import不到了,但是直接_components[下标]代替getComponent是可以的

你这个EffectBar在本地和远程都有一份相同的代码?


试试这个吧

秀儿~~我试试

1、两个bundle不要相互import
2、加载bundle时,先加载依赖bundle

最新进展:
目前定位到问题是出在import上
本地Bundle里的脚本,import另一个Bundle里的脚本是可以的
远程Bundle里的脚本,import另一个Bundle里的脚本只会取到一个字符串,而无法识别类型。
现在采用的方法是不import,getComponent直接填类名的字符串
这个虽然能解决,但是脚本里所有Bundle外的类都要改成这样
有没有更好的办法

兄弟有好的方法了吗这个import只会对继承component的脚本有问题是吗,我这边是远程bundle引用了另一个公共的远程bundle,公共的先加载还是报错了

已解决,把Component弄成全局的就行了

这样不需要import