Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过unity中的套接字传输纹理2D_C#_Sockets_Serialization_Unity3d_Network Programming - Fatal编程技术网

C# 通过unity中的套接字传输纹理2D

C# 通过unity中的套接字传输纹理2D,c#,sockets,serialization,unity3d,network-programming,C#,Sockets,Serialization,Unity3d,Network Programming,我正在尝试使用套接字在unity中传输纹理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 =

我正在尝试使用套接字在unity中传输纹理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

这是序列化过程中的错误还是其他错误?

从流中读取字节并将它们放入
recBuffer
。但是您刚刚分配了流,所以它是空的-没有什么可读的

您可能想使用:

从流中读取字节并将它们放入
recBuffer
。但是您刚刚分配了流,所以它是空的-没有什么可读的

您可能想使用:

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