关于js的worker

请问各位用过的老哥,我现在是有一个worker文件,然后路径是放在assets/script/logic/worker/xxxworker.js,根据deepseek告知我需要使用new Worker(“script/logic/worker/xxxworker.js”),反复确认了,不需要前面的assets。

现在运行下来的结果是xxxworker.js中的输出会在控制台里显示(也就是说,这个文件确实被运行了),而且是无论我有没有调用都会输出(在不相干的页面,甚至在cocos场景编辑器中),但是new Worker后,会报错,根据浏览器调试器的展示,明确是我试图创建worker的js文件是404。
我确认了,js文件没有语法错误,路径的大小写无误。

这可能是什么情况?

Worker加载的是动态资源,creator动态资源管理都是resources目录下的,你放在assets目录下的资源都会被creator重新映射,没办法通过路径直接拿到资源的

我现在改成了放到resources下,然后先用resource.load去加载,也会失败。然后我试着添加一个TextAsset的property然后通过拽文件的方式也不行。老哥能不能给个样例我参考一下

resource.load加载的是资源对象,你现在的需求是拿到资源的全路径。
cc.url.raw 用这个吧

而且creator大部分渠道都不支持worker,你们准备用于什么渠道

哦哦,我只是闲暇时间自己研究一下,做一下沉淀

我用的是3.8版本,cc.url.raw这个东西好像已经废弃了

可以用,也替代方案,你可以搜一下

嗯,替代方案是assetManager,
但我这么写还是不对

    assetManager.loadAny('resources/worker/BulletPhysicsWorker', TextAsset, (err, textAsset) => {
    assetManager.loadAny('resources/worker/BulletPhysicsWorker.js', TextAsset, (err, textAsset) => {
    assetManager.loadAny('worker/BulletPhysicsWorker', TextAsset, (err, textAsset) => {
    assetManager.loadAny('worker/BulletPhysicsWorker.js', TextAsset, (err, textAsset) => {

无论是上面那种,都是404,

设置成插件

老哥,可以麻烦说一下详细步骤吗,我之前没怎么接触过插件

我甚至使用了 resources.loadDir(“worker/”, JavaScript, (err, textAsset:JavaScript[]) => {的方式去加载,但是获取的textAsset是一个空数组,已经抓狂了。。。

resources assetManager都不是,他们是加载资源对象,获取资源内容的,你现在的需求是拿到资源的原始路径。

放到aseets平级的library文件夹内

这个不勾选,你就用cc.url.raw

劳烦问一下,放过去后应该用什么方式去获取呢?

没法用的,3.x版本连cc都没了,namespace cc下的url也没有raw方法。只能用assetManager去拿。

找到地方了,在js文件的inspector里有一个导入为插件,但是我添加后该怎么去获取?继续用assetManager去loadAny还是怎么操作?

cc 是window下的一个属性,可以拿到的,而且url在最新的3.8.6也没有被移除,在保留废弃api的前提下是可以拿到的

如果非常执着 就看下这个吧 cc.url.raw 2.4+ 替代 感谢jare 大大