Protobuf-net 和 Unity3D 类型

Posted

技术标签:

【中文标题】Protobuf-net 和 Unity3D 类型【英文标题】:Protobuf-net and Unity3D types 【发布时间】:2014-09-23 04:50:19 【问题描述】:

我对 Unity3d 中的 protobuf-net 有疑问。 是否可以序列化 unity3d 类型:GameObject. 例如,我有一个 GameObject 类型的类属性,这个类是序列化/反序列化的?

using ProtoBuf;
using UnityEngine;
...

[ProtoContract]  
public class Example 

   [ProtoMember(1)]
   public int Count get;set;
   [ProtoMember(2)]
   public string Name get;set;
   [ProtoMember(3)]
   public GameObject MyGameObject get;set;  // ???

对不起,我的英语..

【问题讨论】:

您能否提供将GameObject 分配为RunTimeTypeModel 的语法 【参考方案1】:

你必须告诉 protobuf-net 你想序列化哪些类和属性。因为你不能用属性来装饰GameObject,所以有不同的方法来做到这一点。

例如,您可以使用 RuntimeTypeModel.Default 执行此操作,这里是类 Point 的示例,它将属性 XY 设置为序列化。

RuntimeTypeModel.Default
       .Add(typeof(System.Windows.Point), false).Add("X", "Y");

在这种情况下,您的 GameObject 必须有一个默认构造函数。

【讨论】:

能否提供分配GameObjectas RunTimeTypeModel 的语法

以上是关于Protobuf-net 和 Unity3D 类型的主要内容,如果未能解决你的问题,请参考以下文章

使用 protobuf-net 反序列化字典

protobuf-net、版本控制和代理类型的最佳实践

Protobuf-net 创建具有接口和抽象基类的类型模型

序列化动态类型参数 Protobuf-net

负载平衡系统中的 Protobuf-net 动态类型

Unity3D —— protobuf网络框架