protobuf_for_unity

unity3D 游戏引擎
授权协议 GPL
开发语言 C#
所属分类 游戏/娱乐、 游戏模拟器/工具/引擎
软件类型 开源软件
地区 国产
投 递 者 颜修明
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Google 的 protobuf 3.0.x,unity3D 游戏引擎。

protocolbuffer 是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go、python等,每一种实现都包含了相应语言的编译器以及库文件。

但官方提供的C#库文件 google/protobuf 需要.net4.5及以上版本,并不支持Unity游戏引擎。

为了在Unity中使用Protobuf,我对其源码进行了兼容性修改,希望能为有需求的人提供帮助。

使用方法:
将目录 Google.Protobuf 下的所有文件拷到 Unity 工程中。

接下来可以参考 test_msg.proto

syntax = "proto3";message TheMsg {
  string name = 1;
  int32 num = 2;
}

以及 Test.cs

void Start ()
{
    TheMsg msg = new TheMsg();
    msg.Name = "am the name";
    msg.Num = 32;

    Debug.Log(string.Format("The Msg is ( Name:{0},Num:{1} )",msg.Name,msg.Num));    byte[] bmsg;    using (MemoryStream ms = new MemoryStream())
    {
        msg.WriteTo(ms);
        bmsg = ms.ToArray();
    }


    TheMsg msg2 = TheMsg.Parser.ParseFrom(bmsg);
    Debug.Log(string.Format("The Msg2 is ( Name:{0},Num:{1} )",msg2.Name,msg2.Num));

}

测试输出:


  • 参考帖1 参考贴2

  • 通常Type.GetType  是未编译进 dll中的类  若调用 dll 类型  需要新的方法 将协议 头部  加上  代表类型的 字符串 在解析时候 ,先获取 代表 类型的 字符串, 通过字符串  获取类型   进行 反序列化 得到 一个mess 就可以强制转化对应类型对象数据 以下通过字符串参数 获取dll内的类型的方法 public static Type typen(string typ

  • 哎,各种坑,总算整差不多明白了,放了一个github工程,把配套的protobuf-net源码,dll和生成工具都放一起了。   注意仔细读README,如果使用mono的,直接把dll放到工程的Plugins目录下就行了,要选择.net 2.0,不能用.net 2.0 subset。   如果要使用il2cpp的,需要把协议文件与protobuf-net for Unity的dll文件一起编译成

  • protobuf3-for-Unity-and-ILRuntime https://github.com/gongxun/protobuf3-for-Unity-and-ILRuntime 基于google官方3.4.1版本的protobuf c#-runtime以及3.4.0版本的protoc修改而来,可用于ILRuntime,同时移除了不常用的功能,精简了生成代码的体积. 当用于ILRunti

 相关资料
  • 问题内容: 我最近一直在研究游戏开发,而我的第一种编程语言是Java。在玩了许多用c ++开发的令人惊叹的游戏之后,我想知道为什么Java在游戏行业中没有被大量使用。我查看了jMonkeyEngine 3和其他一些游戏引擎环境,但是看到的屏幕截图远没有那么令人惊叹。诸如EA的《极品飞车》(Need for Speed Hot)和ubisoft的Assassins Creed等标题传达了这种现实感。

  • 一个非常小的script脚本引擎,可以同时在j2me / j2se / c++ platform上面运行 它的目标是使用这个脚本引擎便于开发一个更加灵活的j2me 游戏这个脚本有点像BASIC这东西不错,是一个开源的脚本引擎,大家可以学习里面的思想里面其中带了一个例子,是3子棋。感觉挺不错的。这东西在SF也挺活跃的。

  • 12.19 技术一面 12.22 技术二面 12.26 三面(主管+hr) 1.5 交叉面 1.8 oc 其实很想每次把面经给记录下来,但实在怕有潜在竞争对手,这个广州只剩1个hc的岗位对我来说真的很重要 之前灵犀11月底发过冬季补录的邮件,但我写了之后没什么回应,转机竟然是实验室同门在boxx上被灵犀的人联系,然后转推了我,大半个月走完了流程;虽然在深圳这边只实习了一个月,但还是学到了很多东西,

  • 此功能旨在降低H5游戏接入手Q轻游戏成本,同时提供手Q相关的能力:用户信息、排行榜、分享等 支持版本:安卓手 Q 7.6.0 及以上,iOS 7.9.0 及以上 H5游戏包上架与正常游戏包上架流程一致 H5游戏包说明 H5游戏包与普通游戏包有所不同,游戏专用包地址 gameConfig.json:游戏配置文件,H5需重点关注 main.js:使用Bricks引擎开发的游戏的代码文件,H5游戏不用关

  • 8.6一面,supercell部门,邮件上写的游戏发行,实际还是技术部门,被拷打一个小时 先问简历和项目,提到角色骨骼动画(简历相关),骨骼动画的原理和生成过程,判断2D下线与矩形相交,射击游戏中子弹如何判断碰撞,速度过快时如何判断穿墙和击中(简历相关),判断点在三角形内 图形学八股,渲染管线,太久没碰忘了很多 cpp八股,泛型、特化介绍,虚函数、多态介绍,堆栈内存不同点,进程和线程不同点 算法,

  • 看到没什么发多益的同学,我就发一个给大家参考参考吧,一面是业务面,面了70min,二面是HR面,问的什么忘了 问项目(做了什么、难题怎么克服),和项目组成员以及需求方怎么沟通的 项目中信息如何加密,未收到信息如何处理? 项目中用redis做什么,用了redis的哪些数据结构?为什么用这些数据结构? 项目中事件的逻辑引擎怎么设计的?设计的思路是上面? 最熟悉的两种语言以及他们的优缺点 深拷贝和浅拷贝

  • offer已经有一小段时间了,其实之前就打算发,但是最近在赶前一阵因为找实习而搁置的活。这两天有点闲工夫,就把之前记录的一点点面经发一下,回馈社区。 (看其他真正的引擎佬面试强度比我高太多了,相比之下我就是个臭弟弟,运气太好了。面试中也看到了很多不足,得抓紧补起来了) timeline 3.22 投递(过了个周末,3.25周一约了3.27一面) 3.27 一面(当天过,并约次日二面) 3.28 二

  • PS Vita上可游玩存储于PlayStaiton®Vita卡或从PlayStation®Store下载的游戏。 游戏的LiveArea™ 游玩PlayStaiton®Vita卡的游戏 游玩从PlayStation®Store下载的游戏 将使用PS3™下载的游戏复制至PS Vita游玩 在PS Vita游玩PSP™ (PlayStation®Portable)的游戏