Sockets 在unity3d中序列化和反序列化
在开发unity3D小型应用程序的过程中,我遇到了一个问题。我使用套接字将数据从服务器发送到客户端。客户机和服务器都有一个相同的类,所以服务器中的数据在客户机中序列化、发送,然后反序列化(发送数据大约为1MB,它由文件组成)。当我使用c#console应用程序项目时,unity3d工作正常,从服务器获取数据不会延迟。但在unity3d中,情况并非如此。问题是在反序列化对象时。(每10次尝试一次就可以了)。有人能解释什么事吗?(如果有帮助的话,我可以显示我的代码)有些代码会很好,错误消息会更好 您的C#console应用程序项目是使用与unity捆绑的mono构建的吗?如果不是,请知道unity的.NET实现与Microsoft的.NET和现代Mono都相去甚远 除此之外,序列化在Unity中是一个非常令人恼火的话题,因为它碰巧会引发很多问题:Sockets 在unity3d中序列化和反序列化,sockets,unity3d,Sockets,Unity3d,在开发unity3D小型应用程序的过程中,我遇到了一个问题。我使用套接字将数据从服务器发送到客户端。客户机和服务器都有一个相同的类,所以服务器中的数据在客户机中序列化、发送,然后反序列化(发送数据大约为1MB,它由文件组成)。当我使用c#console应用程序项目时,unity3d工作正常,从服务器获取数据不会延迟。但在unity3d中,情况并非如此。问题是在反序列化对象时。(每10次尝试一次就可以了)。有人能解释什么事吗?(如果有帮助的话,我可以显示我的代码)有些代码会很好,错误消息会更好 您
- 首先,对序列化进行了裁剪,有些东西在运行时不存在。这是Unity团队的设计选择
- 其次,要实现良好的自定义序列化,您需要反射,反射也不是完全可用的。特别是在iOS和webplayer中,你没有标准,但它相当于
- 第三,unity编译的每个平台在JIT/AOT中的泛型实现上都有所不同,并详细说明了反射在运行时是如何工作的,所以要做好准备,在任何地方都要格外小心地测试一切
byte[] jsonData = Encoding.ASCII.GetBytes (yourJsonGoesHere)
您的字符串JSON字节已准备好从服务器发送或发送到服务器。其次,如果您正在使用binaryformatter,请尝试阅读文档中的binaryformatter.binder。首先感谢您的回复。所以,反序列化时的错误消息是“SerializationException:意外的二进制元素:0”。首先感谢您的回复。所以,脱盐时的错误消息是“SerializationException:意外的二进制元素:0”。我的C#应用程序是独立的,没有与unity的链接,它直接连接到socket服务器。至于JSON.NET,我认为它在我的情况下不会有用,因为套接字服务器只发送字节(或字符串)