Конвертируйте Unity3D json в Javascript Object json формат - PullRequest
0 голосов
/ 22 сентября 2019

Весь мой рабочий процесс:

Unity3D (кодирование данных класса в формате json) -> WebGL Build -> Javascript html -> Socket.IO Эти типы данных (int, byte [], string) должен быть читаемым в socket.io.

Это функция, которую я использовал в Unity3D для преобразования класса в строку json.

JsonUtility.ToJson ();

Когда я печатаю в node.js, я получил это, и он не мог понять тип данных.

{"Type":0,"Str":"AAA","Byte":[0]}

Если это правильно, я получу результат ниже, когда я буду печатать в node.js.

{ Type: 0, Str: 'AAA', Byte: [ 0 ] }

Таким образом, мне нужно решение для их преобразования.Может кто-нибудь сказать, пожалуйста, самый простой способ конвертировать их в C #?

ОБНОВЛЕНИЕ: больше информации

Ниже сценарий C # работает в Unity3D, и я хочу преобразовать это:

Application.ExternalEval(@"
    if(typeof window.socketIO !== 'undefined')
    {
        window.socketIO.emit('" + e + @"', " + data + @");
    }
");

https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html

Поскольку «Application.ExternalEval» в последней версии Unity устарела, мне нужно преобразовать их в нечто вроде этого:

mergeInto(LibraryManager.library, {
WebSocketEmitData: function (_e, _data) {
    var e = Pointer_stringify(_e);
    var data = Pointer_stringify(_data);
    if(typeof window.socketIO !== 'undefined')
    {
        window.socketIO.emit(e, data);
    }
}
});

Спасибо!

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

Наконец я нашел ответы сам.Я не заметил, что могу выдавать объект вместо строкового сообщения.и теперь это работает!

WebSocketEmitData: function (_e, _data) {
    var e = Pointer_stringify(_e);
    var data = Pointer_stringify(_data);
    var obj = JSON.parse(data);
    if(typeof window.socketIO !== 'undefined')
    {
        window.socketIO.emit(e, obj);
    }
}
0 голосов
/ 22 сентября 2019

Я активно использую Javascript / Unity / C # в своем текущем проекте, я настоятельно рекомендую вам использовать JSON.NET Для Unity он будет выдавать универсальный формат json, аналогичный тому, который используется в javascriptКласс JSON.

Использование очень похоже на примитивную утилиту json для Unity.JsonUtility.ToJson => JsonConvert.SerializeObject JsonUtility.FromJson => JsonConvert.DeserializeObject<T>

При этом давайте преобразуем строку json из объекта C # в объект javascript.

// Convert your json string to a native javascript object.
var jsObject = JSON.parse(str);
console.log(jsObject.Type); // outputs 0
console.log(jsObject.Byte.length); // outputs 1
console.log(jsObject.Str); // outputs AAA

// Convert your native javascript object to another of certain type, 
// will assume the desired javascript type is Player in a namespace Database
var player = Object.assign(new Database.Player(), jsObject);

Такжевместо if(typeof window.socketIO !== 'undefined') используйте if(typeof window.socketIO), он чище, проверяет как нулевое, так и неопределенное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...