2015-11-02 55 views
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

這是序列化過程中還是別的什麼錯誤?

回答