В проекте Unity у меня есть класс WsMessage для взаимодействия с WebSocket. Этот класс находится в моей собственной библиотеке WebSocketModels.
namespace WebSocketModels
{
[Serializable]
public enum WsMessageType
{
System, Player, Challenge, DeclineChallenge, RemoveChallenge, Game, Move, Moves, Chat,
Players, Challenges, Games, Clock
}
[Serializable]
public class WsMessage
{
public WsMessageType type { get; set; }
public string data { get; set; }
public WsMessage() { }
public WsMessage(WsMessageType type, string data)
{
this.type = type;
this.data = data;
}
}
}
По какой-то причине он не может быть десериализован. Ошибок не увидел. Если я перенесу этот класс из библиотеки непосредственно в объект проекта Unity из WsMessage, создается нормально. Я использую эту простую команду для получения объекта WsMessage:
WsMessage message = JsonConvert.DeserializeObject<WsMessage>(inputWsMessage);
Я столкнулся с этой проблемой после того, как изменил свой скриптовый сервер Unity Player на IL2 CPP. На Mono все было нормально.
Пример JSON содержимого
{"type":10,"data":"[{\"id\":\"0d8648e4-ce15-4084-87f9-f3de2b5a9b32\",\"fromPlayer\":{\"id\":\"af76e7c3-27b2-4d05-bcd3-f4b41c3bb7ba\",\"name\":\"Aydar\",\"rating\":1600.0,\"isOnline\":false},\"color\":0,\"timeControl\":{\"time_range\":10,\"time_increment\":5,\"control_type\":0},\"toPlayer\":null}]"}