Unity中使用ProtoBuf-net的正确姿势

  • 三个核心问题
    • 选用哪个版本?为什么不选择Google.ProtoBuf?
    • 能否支持IL2CPP的AOT?
    • 使用Dll还是使用源码?
  • 问题一:选用哪个版本?为什么不选择Google.ProtoBuf?
    • 选择最新版本,但是要手动编译源码。
    • 不使用Precomplie,主要原因是Precomplie目前只支持Windows系统,Mac出包机无法使用,打断了自动化流程。
    • Protobuf-net经过N个著名大型上线项目验证,稳定性和可靠性强;目前仅发现某款二次元游戏采用了Google.ProtoBuf。
  • 问题二:能否支持IL2CPP的AOT?
    • 著名的r668版本和从Nuget上下载的新版本不支持AOT,需要手动编译源码,去掉带动态类型生成的宏。
  • 问题三:使用Dll还是使用源码?
    • 建议使用Dll,源码采用了一些高版本C#语法,一些.Net2.0运行时的项目不支持。
    • 使用Dll有一个注意事项,由于IL2CPP会裁剪Dll中的Attribute的Get方法,会导致反序列化失败,因此需要使用link.xml进行裁剪规避。
  • 其他问题:
    • 要不要根据Schama生成C#代码?这个要根据项目来,可以手动加Attribute,也可以自动生成,自动生成主要用在和导出给服务器、Lua。
    • 不使用Precomplie和Emit,那么性能如何?性能确实一般,对于中小型项目来说够用了,对于性能敏感的项目可以使用ZeroFormatter和MsgPack,这两种采用了Lazy加载的机制,很多类型用到时才会进行反序列化,无需初始全部反序列化,占用的内存更小。
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值