首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ProtocolBuffer内Unity3D靶向iOS

ProtocolBuffer内Unity3D靶向iOS
EN

Stack Overflow用户
提问于 2012-12-05 14:22:17
回答 1查看 2.8K关注 0票数 1

我试图在一个针对原状网设备的Unity3D项目中使用Marc的C#协议缓冲区实现。

我设法使用C#从协议缓冲区文件MyFile.proto创建了一个protogen文件(让我们称之为MyFile.cs)。

导入文件和protobuf-net.dll (我在统一文件夹中使用dll )后,我可以成功地反序列化以前序列化的文件(我正在从python代码进行序列化,所有工作都很好):

代码语言:javascript
复制
MyType myType;
using (var file = File.OpenRead("Assets/MyTypeBin")) 
{
  myType = ProtoBuf.Serializer.Deserialize<MyType>(file) ;
}

上述解决方案在模拟器上运行良好,但在针对iOS设备(es.ipad)时失败。

我试图从unity/protobuf-net.dll切换到CoreOnly/ios/protobuf-net.dll,但对于最后一个失败的compile.It,似乎没有在核心dll中声明Deserialize方法:

错误CS0117:ProtoBuf.Serializer' does not contain a definition for反序列化

我读过这个文章,但它似乎已经过时了。它指的是protobuf-net的旧实现。我希望在这段时间里有什么改变。

我的问题是:

  1. 是否可以使用protobuf-net r602Unity3D瞄准iOS设备,而不使用 创建要序列化/反序列化的模型类的库dll (程序集)

就像链接的博客文章中建议的那样?我希望有一个更快的工作流,可能直接导入protogenUnity3D项目中生成的Unity3D文件。

  1. 如果是,怎么做?我需要参考哪个dll?让上述代码片段在iOS设备上再次工作的步骤是哪些?
EN

回答 1

Stack Overflow用户

发布于 2018-03-26 18:06:57

我相信这是解决办法:

在iOS上,苹果不允许在运行时编译JIT存在一个问题,从而阻止了protobuf的使用。它可以用Environment.SetEnvironmentVariable("MONO_REFLECTION_SERIALIZER",“是”来解决;在使用任何原型之前,它只能在.NET 4.6上工作。(我试用了3.5,但有关JIT的错误仍然出现)

https://github.com/5argon/protobuf-unity

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13725331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档