可以用,也替代方案,你可以搜一下
嗯,替代方案是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文件夹内
劳烦问一下,放过去后应该用什么方式去获取呢?
没法用的,3.x版本连cc都没了,namespace cc下的url也没有raw方法。只能用assetManager去拿。
找到地方了,在js文件的inspector里有一个导入为插件,但是我添加后该怎么去获取?继续用assetManager去loadAny还是怎么操作?
cc 是window下的一个属性,可以拿到的,而且url在最新的3.8.6也没有被移除,在保留废弃api的前提下是可以拿到的
1.前端js项目是可以直接引入一路径去new worker的
2.在cocos中没有路径引入了,因为都打包成了一个js文件,曲线救国,用Blob包裹一段js字符串 就可以运行了,类似于worker(blob),我之前成功过
我就是引了半天,怎么搞都是404才来问的。。。什么assetManager,resources,loadBundle,直接按照路径丢,这个文件也放在各种位置都试了。。。
Blob确实可以用,但直接把js代码当字符串丢进去,感觉不太优雅啊。。。
微信小游戏的话好像比较好处理,修改配置并把 js 文件放在配置路径下就好:多线程 Worker | 微信开放文档
其它渠道可以把 js 文件放到远程 CDN,走远程加载。
如果要放本地的话,建议放 resources,假设放在 assets/resources/workers/my-worker.js,可以试试:
// 假设你的 worker 脚本在 assets/resources/workers/my-worker.js
import { resources, Asset } from 'cc';
// 加载 worker 脚本并获取其 URL
resources.load('workers/my-worker', Asset, (err, asset) => {
if (err) {
console.error('Failed to load worker script:', err);
return;
}
// 获取资源的原生 URL
const workerUrl = asset.nativeUrl;
// 创建 Web Worker
const worker = new Worker(workerUrl);
worker.onmessage = (event) => {
console.log('Message from worker:', event.data);
};
worker.postMessage('Hello from main script!');
});
配置成插件后,需要区分下环境
预览时:“plugins/” + js在项目内的路径(plugins/assets/xxx/xxx.js)
构建后:“src/” + js在项目内的路径(src/assets/xxx/xxx.js)
我现在找到原因了,之所以一直是404,我个人推测是因为我一直处于开发调试模式下,我刚才试着打个版本出来,然后在对应的build-template中去放上worker,然后再调用new Worker(“workers/xxxworker.js”)就不会404了。。。。
那问题又回来了,难道我想调试worker,难道要么使用blob,要么每次都得初版本吗。。。
有build-templates就有preview-templates
让ai写了个python打包工具配置在jenkins上,worker.js内容还是一样编写,只是在打包步骤前加一个,将worker.js内容写入到指定文件方法内,这样操作pc上web环境里你还是正常worker用,打包环境实现成blob但你不需要关心
