【问题标题】:Transfer Texture2D via socket in unity统一通过套接字传输Texture2D
【发布时间】: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


    【解决方案1】:

    Stream.Read(Byte[], Int32, Int32) 从流中读取字节并将它们放入recBuffer。但是你刚刚分配了流,所以它是空的——没有什么可读的。

    您可能想使用this constructor

    Stream stream = new MemoryStream(recBuffer, 0, bufferSize);
    

    【讨论】:

      猜你喜欢
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2018-08-19
      相关资源
      最近更新 更多