V7投稿|如何在项目中开发并使用WebAssembly(WASM)来了

https://caniuse.com/?search=webassembly

我用微信,使用开发者工具没问题。
但是用真机预览,initSync里会报错。
结果是WebAssembly里并没有Module。
改一下代码,将这段判断去掉。就可以运行的。

:+1: 感觉wasm在不同平台有不同待遇,总归能跑起来,就能再提高点性能

已经尝试过把某些VM打进去在某些平台上测试通过了 :yum:,很有搞头 :face_with_hand_over_mouth:

大佬真会玩 :smile:

把unity能用的那套原理扒出来就会发现卧槽凭啥unity能搞cocos也支持了这东西为啥就不能搞呢 :rofl:

我试过了微信 抖音这样的大平台没问题,但是什么美团啥的非主流平台问题一大堆 :rofl:

非主流的没试过,美团这些还能跑小游戏??

能,美团甚至能玩原神 :rofl:

感谢回复,已经解决了。

感觉和WebAssembly模块的实现语言有关,我用Rust、AssemblyScript、C分别实现了一次,因为我的功能需要传数组,然后只有用 C 实现的在Safari14.0可以通过WebAssembly.validate()校验,在Safari14.1以上版本以及chrome倒是都没问题。

不知道什么原因,可能是写得不对。

把导出的wasm.js和wasm.d.ts文件直接拖入到对应文件夹下面后,在文件夹下新建一个package.json文件,在里面写入"type": “module”,保存,然后TS文件中import { initSync, InitOutput } from ‘./xxx/wasm.js’;就可以读取对应的.d.ts文件了
引擎文档里有相关介绍,https://docs.cocos.com/creator/manual/zh/scripting/modules/spec.html

1赞

2.4版本可以用吗

在2.4.11里面试下了,是可以用的,下面两处地方要处理下

image
生成的js代码,红框里的内容注释掉,不然代码无法正确读取,会报找不到import.meta

image
初始化的时候,用 wasm_asset._buffer 代替 3.x里面的 wasm_asset.buffer()

其它的操作流程是一样的

等一个官方文档更新

感兴趣的朋友们还可以参考看看这个assemblyscript。
直接使用类似 typescript 的语法写代码, 编译到 asm
https://assemblyscript.nodejs.cn/

good,这个教程今天依然能用,比官方文档简单很多