1
我正在嘗試使用套接字統一傳輸一個texture2D。 我正面臨一些序列化問題。通過統一插槽傳輸Texture2D
下面是我用序列化的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 suports seeking, but its length is 0
這是序列化過程中還是別的什麼錯誤?