当前位置: 代码迷 >> 综合 >> Unity跨iOS、Android平台使用protobuf-net的方法(.Net 2.0 subset)《一》
  详细解决方案

Unity跨iOS、Android平台使用protobuf-net的方法(.Net 2.0 subset)《一》

热度:27   发布时间:2023-11-05 17:49:07.0

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群


参考博客:https://blog.csdn.net/qq_37310110/article/details/80529126

如果你的工程可以以.Net 2.0 模式运行,请看这个帖子中的方法。

地址:https://blog.csdn.net/qq_37310110/article/details/80529054

如果能以.Net 2.0subset下运行,就可以继续往下看了。

==========================================================

项目中使用了开源项目 Protobuf-net 来解析 google protobuf 格式的通信数据,因为 GOOGLE 自带支持的语言里不包括 C#,所以需要用到第三方的开源库 Protobuf-net 。

 

之前在WIN7,安卓上使用都正常。发布到 IPAD MINI2 上是发现有问题,表现如下:

有时可以正常使用,但似乎一开始会被卡一会。

有时完全无法正常使用,反序列化的时候会抛异常出来。

 

查网络上资料,觉得是否应该在发布到IOS时设置里要改一下。

有一个选择支持“.Net 2.0 subset模式”或“.Net 2.0模式”的选项,默认是“.Net 2.0 subset模式”,网上说要改成“.Net 2.0模式”

改了后,发现还是抛异常,不过现在报“JIT异常”,发现U3D不支持。

 

所以最后采用的方法是

1. 下载protobuf-net源码, 把其中“protobuf-net”文件夹 拷贝到unity 即可 . (我从svn下载好之后有很多文件夹的,比如protobuf-net,protobuf-net_IKVM,protobuf-net_MonoDroid,protobuf-net_Phone7 ,ProtoGen,QuickStart 等等 ,只复制那个protobuf-net就可以 。) 

地址:https://github.com/mgravell/protobuf-net

2. 建立一个新的文件smcs.rsp  ,内容是-unsafe ,前后都无空格。该文件放在 Assets 目录下。

3. 把工程设置为.Net 2.0 subset

4. 重启Unity 

这样就搞定了。 

 

需要注意的是: 

你的工程必须是.Net 2.0 subset,  如果是.Net 2.0是无法在ios上用这个方法的

 

参考博客:https://blog.csdn.net/qq_37310110/article/details/80529126


 

欢迎加入Unity业内qq交流群:956187480

qq扫描二维码加群

 

  相关解决方案