【3.0版本严重bug!!!】AssetBundle文件中类申明变量就报错 ios平台

  • Creator 版本:
    3.3.2 3.3.1

  • 目标平台: 网页正常 , ios出错(必现)

  • 重现方式:

有2个项目 一个空项目A , 只用作加载另一个项目B的AssetBundle.

代码如下
assetManager.loadBundle(jsb.fileUtils.getWritablePath()+‘game/1’,(err,bundle)=>{
console.log(bundle.name);
bundle.loadScene(‘scene’,(err,scene)=>{
director.runScene(scene);
});
})

A项目中只有一个场景 和 一个这样的加载类。

B项目中有一个AssetBundle文件夹,文件夹中有一个空场景和一个test.ts类, test.ts类中如果写了这样的成员变量申明代码就会在ios中报错 :

import { _decorator, Component, Node } from ‘cc’;
const { ccclass, property } = _decorator;

@ccclass(‘Test’)
export class Test extends Component {

@property(Node)
mNode : Node;

start () {

}

}

test.ts类中 只要加了
@property(Node)
mNode : Node;
就会引起报错 , 不申明这个变量 都会正常运行。

我是通过把assetbunlde放在ios的a项目app的沙盒路径下 读取的。

而且 如果申明一个不是cc组建的变量
serializableDummy : 0; 这样 也会报错

serializableDummy! : 0; 这样写 才不会报错

  • 首个报错:
    16:09:41 [ERROR]: [ERROR] file /Users/mercurial/Documents/Project/312PPP/native/engine/common/Classes/Game.cpp: line 54

16:09:41 [ERROR]:

Uncaught Exception:

- location :

- msg : unhandledRejectedPromise

- detail :

Error: Unable to instantiate chunks:///_virtual/_rollupPluginModLoBabelHelpers.js from chunks:///_virtual/test.ts

stacktrace:

@panda @jare

  • 之前哪个版本是正常的:
  • 手机型号:
  • 手机浏览器:
  • 编辑器操作系统:
  • 重现概率:

没人吗。。。。???

给个 demo 吧

assetbundletest.zip (2.6 MB)

发上来了。。

好的,我们确认下

解决了吗 我也遇到这个问题了

???怎么说啊

你怎么比我还急。。 :grin:

3.3.2 工程发布iOS在脚本中访问 this.node 就为null,模拟器和浏览器就正常,不知道怎么回事。

你是打包assetbundle出现还是自己工程里就出现的啊?

没有打包 assetbundle ,就是直接写了个通用音效的脚本,挂载到按钮上,统一处理点击音效,
resources.load(“sound/click”, AudioClip, (err, clip) => {
this.node.getComponent(AudioSource).playOneShot(clip, 1);
//iOS 运行报错,this.node 打印也是null
});

3.x的模拟器上随便怎么点都正常,发布iOS 后第一次或第二次点击就报 this.node 为空( this.node为按钮控件)。 这个代码是自己在2.4.x上用的,都正常,移植到3.x 上 iOS 就报这种问题,感觉 3.x 还很多坑.

我刚刚试过你的情况了,可以输出的 一切正常啊 是不是你的代码哪里有问题

@EndEvil 这个问题怎么说啊 4天都过去了 有点效率啊 急死了

现在定位到原因了,我们看看有没有临时解决方案,这个东西是 rollup 编译出来的额外文件

好的,谢谢,我再检查一下,还是有问题的话我就做个demo

好的。。。

https://forum.cocos.org/t/topic/121172,
之前有类似的问题,可以参考帖子里的做法临时修复一下

好的 看到了 谢谢啦

我看了这个帖子 不过我们是打包ios的 好像环境不一样 不知道要怎么改 打包后项目里的chunks里也有bundle.js setting里面路径也自动配置了