Возврат байтового массива из JavaScript в Web-сборку Emscripten / Unity - PullRequest
0 голосов
/ 07 июля 2019

У меня есть некоторые данные JavaScript, которые я сериализирую, чтобы Unity могла использовать их в виде массива byte [], как описано здесь . Я хочу предоставить эти данные Unity через интерфейс jslib, например:

[DllImport("__Internal")]
private static extern byte[] GetByteArray();

Я попытался связать свои значения из JavaScript с помощью встроенных методов в emscripten:

  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;
  },

К сожалению, это не работает - веб-сборка C # просто видит массив длины 0 в качестве возвращаемого типа. Я также пробовал такие вещи, как HEAPU8.set(myTypedArray, buf).

Вопросы:

  1. Как правильно это сделать?
  2. Если это не так, я, по крайней мере, правильно делаю это с точки зрения JavaScript на C? Проблема более вероятна с тем, как C # представляет байтовые массивы?
...