protobuf网[德]游戏对象序列化(团结3D)

在Unity 3D,还有一个带Transform属性一个游戏对象。 变换具有位置(的Vector3)和旋转(四元)。 我想通过protobuf网这些GameObjects发送到/从后备存储。 我目前用下面的代码但GameObject.transform.position.x,y,z和transform.rotation.x,Y,Z这样做,W似乎没有被存储在序列文件?

RuntimeTypeModel model = TypeModel.Create(); model.AutoAddMissingTypes = true; model.Add(typeof(Vector3), true).Add("x","y","z"); model.Add(typeof(Transform), true).Add("position").Add("rotation"); model.Add(typeof(Quaternion), true).Add("x","y","z","w"); model.Add(typeof(GameObject), true).Add("transform").Add("name"); model.SerializeWithLengthPrefix(fs, go, typeof(GameObject), PrefixStyle.Base128, 0);

反序列化:

using (FileStream fs = new FileStream(path, FileMode.Open)) { fs.Position = 0; RuntimeTypeModel model = TypeModel.Create(); model.AutoAddMissingTypes = true; model.Add(typeof(Vector3), true).Add("x","y","z"); model.Add(typeof(Transform), true).Add("position").Add("rotation"); ; model.Add(typeof(Quaternion), true).Add("x","y","z","w"); model.Add(typeof(GameObject), true).Add("transform").Add("name"); do { len = ProtoReader.ReadLengthPrefix(fs, false, PrefixStyle.Base128, out fieldNumber, out bytesRead); if (bytesRead <= 0) continue; gos.Add((GameObject)model.Deserialize(fs, null, typeof(GameObject), len)); } while (bytesRead > 0); }

我似乎又回到了正确的号码GameObjects的,但是这是在反序列化正确的是。名称属性的唯一的事。 Transform类的子属性没有被翻译跟我当前的代码。 任何想法将超级有益!
谢谢-

编辑

根据我的意见,这里是堆栈跟踪:

at (wrapper managed-to-native) UnityEngine.Object.set_name (string) <0x00004> at (wrapper dynamic-method) UnityEngine.Transform.proto_22 (object,ProtoBuf.ProtoReader) <IL 0x0002f, 0x00137> at ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read (object,ProtoBuf.ProtoReader) <IL 0x00008, 0x0002f> at ProtoBuf.Meta.RuntimeTypeModel.Deserialize (int,object,ProtoBuf.ProtoReader) <IL 0x0003d, 0x00143> at ProtoBuf.ProtoReader.ReadTypedObject (object,int,ProtoBuf.ProtoReader,System.Type) <IL 0x0002d, 0x000f6> at ProtoBuf.ProtoReader.ReadObject (object,int,ProtoBuf.ProtoReader) <IL 0x00004, 0x00031> at (wrapper dynamic-method) CoreStructure.proto_20 (object,ProtoBuf.ProtoReader) <IL 0x000e5, 0x005cb> at ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read (object,ProtoBuf.ProtoReader) <IL 0x00008, 0x0002f> at ProtoBuf.Meta.RuntimeTypeModel.Deserialize (int,object,ProtoBuf.ProtoReader) <IL 0x0003d, 0x00143> at ProtoBuf.ProtoReader.ReadTypedObject (object,int,ProtoBuf.ProtoReader,System.Type) <IL 0x0002d, 0x000f6> at ProtoBuf.ProtoReader.ReadObject (object,int,ProtoBuf.ProtoReader) <IL 0x00004, 0x00031> at (wrapper dynamic-method) CharacterPoseSet.proto_14 (object,ProtoBuf.ProtoReader) <IL 0x00116, 0x006e0> at ProtoBuf.Serializers.CompiledSerializer.ProtoBuf.Serializers.IProtoSerializer.Read (object,ProtoBuf.ProtoReader) <IL 0x00008, 0x0002f> at ProtoBuf.Meta.RuntimeTypeModel.Deserialize (int,object,ProtoBuf.ProtoReader) <IL 0x0003d, 0x00143> at ProtoBuf.Meta.TypeModel.DeserializeCore (ProtoBuf.ProtoReader,System.Type,object,bool) <IL 0x00011, 0x00073> at ProtoBuf.Meta.TypeModel.Deserialize (System.IO.Stream,object,System.Type,ProtoBuf.SerializationContext) <IL 0x00022, 0x000ff> at ProtoBuf.Meta.TypeModel.Deserialize (System.IO.Stream,object,System.Type) <IL 0x00005, 0x0003e> at PoseEditor.DeserializeCharacterPoseSet () [0x0015f] in C:\My Work\KungFuKitty\UnityWorkspace\Assets\Scripts\Editor\PoseBuilder\PoseEditor.cs:137 UnityEngine.Debug:LogError(Object) PoseEditor:DeserializeCharacterPoseSet() (at Assets/Scripts/Editor/PoseBuilder/PoseEditor.cs:160) PoseEditor:OnGUI() (at Assets/Scripts/Editor/PoseBuilder/PoseEditor.cs:98) PoseBuilder:OnGUI() (at Assets/Scripts/Editor/PoseBuilder/PoseBuilder.cs:128) UnityEditor.DockArea:OnGUI()

反序列化:

RuntimeTypeModel model = TypeModel.Create(); model.AutoAddMissingTypes = false; model.Add(typeof(CharacterPoseSet), true); model.Add(typeof(LegStructure), true); model.Add(typeof(ArmStructure), true); model.Add(typeof(AuxilaryStructure), true); model.Add(typeof(CoreStructure), true); model.Add(typeof(Vector3), true).Add("x", "y", "z"); <-- UnityEngine model.Add(typeof(Transform), true).Add("name"); <-- UnityEngine model.Add(typeof(Quaternion), true).Add("x", "y", "z", "w"); <-- UnityEngine model.Add(typeof(GameObject), true).Add("transform").Add("name").Add("layer"); <--.. cps = model.Deserialize(fs, cps, typeof(CharacterPoseSet)) as CharacterPoseSet;

这是PC / Windows 7的箱。所有代码统一编辑器内执行。

分类:protobuf的净 时间:2012-01-01 人气:0
本文关键词: protobuf的净
分享到:

相关文章

  • 什么是内置的BinaryFormatter基于净系列化的缺陷? 2012-10-22

    什么是内置的BinaryFormatter基于净系列化的缺陷? (性能,灵活性,限制) 请伴随着一些代码,如果可能的答案. 例: 被序列化的自定义对象必须装饰用[Serializable]属性或实现ISerializable接口. 不太明显的例子: 匿名类型不能被序列化. --------------解决方案------------- 如果你的意思BinaryFormatter 是基于领域,是十分版本不耐; 更改私有实现细节和它打破(甚至只是将其更改为一个自动实现的属性) 是不与其他平台交叉兼容

  • 难道protobuf网生成的二进制兼容谷歌规格 2015-01-04

    其实我想使用谷歌的Java实现序列化我的数据,然后反序列化用C#实现? 我选择portobuf网,因为它似乎更稳定(波尔图#仍是V0.9或者我会去为它). 在我开始做这个工作,我想确保我能做到这一点(用Java实现序列化数据,并使用potobuf净反序列化). 还是有对特定于portobuf网的实现方法中的任何名单? --------------解决方案------------- 如果你想在多个平台上相同的API,乔恩斯基特的实现可能更适合你. 所不同的是protobuf网是围绕常见的C#开发模

  • ASP净MVC SQL Server的问题 2012-01-01

    我如何实现ORM我现有的数据库表(驻留在SQL Server上),以配合ASP净MVC3? 我试图手动创建所有的表属性(波苏斯),并建立和它不会正确映射它,我希望有人能指出我在正确的方向. 谢谢:) --------------解决方案------------- 如果您正在使用实体框架,构建基于你关闭当前​​数据库的实体. 当您在项目启动一个新的实体,如果你想从当前数据库或空打造你问. 我看到了答案http://weblogs.asp.net/scottgu/archive/2010/08/03

  • 无法安装-KB2656353净框架(错误0x652) 2012-01-01

    原题:不能安装-KB2656353净框架 KB2656353不会安装,但它一直在试图重新安装. 我使用Windows XP媒体中心v.2002的Service Pack 3.我相信,KB2656353替代KB2572067也不会在我的电脑上安装了,我正要试图获取解决当这个新的更新(KB2656353)被释放,我得到错误代码:0x652. 有人可以帮助我解决呢? 谢谢! --------------解决方案------------- 嗨LAcoop, 对不起,我本来应该更具体的在发帖遵循解决此问题

  • 写作和阅读记忆的Protobuf重复扩展字段 2012-01-02

    我试图使用与谷歌的协议缓冲器扩展. 我得到了一个"主"的原文件等几个原文件"扩展"的主要原因之一. 在我的Java代码,我不是100%确定如何正确添加到重复的消息. 当我运行我写Java代码时,toString()方法表明,添加的扩展属性,但它不正确解码(可能是因为我跑的生成()调用加入领对象). 我应该如何正确添加在原文件中重复的元素,以扩展项目? File1.proto package protocol_buffer; option java_outer_cla

  • protobuf.net意外亚型 2012-01-04

    我遇到这种异常使用Protobuf.net我的项目: InvalidOperationException "Unexpected sub-type: foo" 我有我送它看起来像这样一类: class message { list<bar> listOfBars; } 富继承关吧,但protobuf的似乎呛到这一点,并产生上述异常. 有没有解决这个某种方式? 我需要能够容纳酒吧的各个不同亚型的列表,以便更加约束类型的解决方案将是困难的/不可能的. -------------

  • 手机或PDA上,我可以有IDE(集成开发环境),如Visual Studio,净豆 2012-01-04

    我只是想,当我旅行到代码,但我不能把我的笔记本电脑,而旅行,所以我想在移动中,我可以创建在C#,.NET或Java应用程序,但对于我需要一个IDE,编译器等. 基本上我要寻找一个电话/手机/ PDA,我可以代码的方式我可以安装在一台机器Visual Studio中通常这样做(远远超过净书或笔记本电脑更方便). 那么,有没有这样的设备? --------------解决方案------------- 让我们来看看你需要克服得到这个工作. 1) 魅力 智能手机的设计,让您保持联系,并在移动中一支经验

  • 在protobuf网我要如何反序列化一个未知类型? 2012-01-04

    我有应该发送序列化的protobuf网消息给对方2联网的应用程序. 我可序列化对象,并给他们,但是, 我想不出如何反序列化接收的字节数 . 我试图反序列化这点,它失败,一个NullReferenceException. // Where "ms" is a memorystream containing the serialized // byte array from the network. Messages.BaseMessage message = ProtoBuf.Seria

  • 净反应堆和ClickOnce部署 2012-01-05

    经过建设我们的VB.NET .EXE是则混淆使用第三方.NET反应堆实用工具之前,该输出包括VS2005部署项目中. 是否有与加扰版本之前再发布使用点击一次更换.exe文件的方法吗? 有没有人成功地部署与点击一次,净电抗器保护的应用程序? --------------解决方案------------- 可以但不使用标准的ClickOnce部署方案. 一种方法是做一个的MSBuild任务,需要您的文件和创建的ClickOnce清单与模糊处理文件. 基本的问题是,一旦更改后的文件清单已创建该文件无效

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.162 (s). 10 q(s)