【发布时间】:2019-07-07 19:11:51
【问题描述】:
我有一些我正在序列化的 JavaScript 数据,以便 Unity 可以将其作为 byte[] 数组使用,如 generally described here。我想通过这样的 jslib 接口将这些数据公开给 Unity:
[DllImport("__Internal")]
private static extern byte[] GetByteArray();
我尝试使用 emscripten 中的内置方法将我的价值观与 JavaScript 联系起来:
GetByteArray: function () {
var myTypedArray = new Uint8Array([10, 20, 30, 40, 50]);
var buf = _malloc(myTypedArray.length * myTypedArray.BYTES_PER_ELEMENT);
writeArrayToMemory(myTypedArray, buf);
return buf;
},
不幸的是,这不起作用——WebAssembly C# 只是将一个长度为 0 的数组视为返回类型。我还尝试了HEAPU8.set(myTypedArray, buf) 之类的东西。
问题:
- 执行此操作的正确方法是什么?
- 如果做不到这一点,我是否至少从 JavaScript 到 C 的角度正确地做到了这一点? C# 表示字节数组的方式是否更有可能出现问题?
【问题讨论】:
标签: c# unity3d emscripten webassembly