Я пытаюсь передать текстуру 2D в единстве, используя сокет. Я столкнулся с проблемой сериализации.Передача текстуры2D через гнездо в единстве
Вот метод тат я использую для сериализации Texture2D:
Texture2D tex = new Texture2D(5, 5);
bool loaded = tex.LoadImage(File.ReadAllBytes(Environment.CurrentDirectory + "/Assets/Textures/IMG_3122.jpg"));
tex.Apply();
byte[] bytes = tex.EncodeToPNG();
NetworkWriter writer = new NetworkWriter();
writer.WriteBytesFull(bytes);
byte[] data = writer.AsArray();
byte error;
byte[] buffer = new byte[1024];
int bufferSize = 1024;
Stream stream = new MemoryStream();
stream.Write(data, 0, 1024);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, data);
Debug.Log("Send byte : " + connectionId);
NetworkTransport.Send(socketId, connectionId, myReliableChannelId, buffer, bufferSize, out error);
И стороне приемника, вот код:
switch (recNetworkEvent)
{
case NetworkEventType.Nothing:
break;
case NetworkEventType.ConnectEvent:
Debug.Log("New Connection event received");
break;
case NetworkEventType.DataEvent:
Stream stream = new MemoryStream();
stream.Read(recBuffer, 0, bufferSize);
//deserialize
BinaryFormatter formatter = new BinaryFormatter();
string receivedImgBase64 = formatter.Deserialize(stream) as string;
//convert received base64 string to bytearray for texture display
byte[] imgByteArray = Encoding.ASCII.GetBytes(receivedImgBase64);
}
Так что, когда я пытаюсь читать recBuffer
со стороны приемника, поток имеет значение NULL.
Ошибка:
SerializationException: serializationStream suports seeking, but its length is 0
Является ли это ошибка с процессом сериализации или что-то еще?