【发布时间】:2015-11-02 16:15:18
【问题描述】:
我正在尝试使用套接字统一传输纹理 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 时,流为空。
错误:
SerializationException: serializationStream 支持查找,但长度为0
这是序列化过程的错误还是其他原因?
【问题讨论】:
标签: c# sockets serialization unity3d network-programming