在Unity3d中使用Google.ProtocolBuffers

  1. 通过Nuget下载Google.ProtocolBuffers,在目录中找到net35下的文件,放入unity3d中作为插件
  2.  1 PersonMessage.Builder personBuilder = PersonMessage.CreateBuilder();
     2         personBuilder.Id = 123;
     3         personBuilder.Age = 33;
     4         personBuilder.Sex = PersonMessage.Types.Sex.Male;
     5         personBuilder.Name = "protobuf";
     6         personBuilder.Phone = "1333333333";
     7         var person = personBuilder.Build();
     8         // 序列化到文件
     9         using (var stream = File.Create("person.bin"))
    10         {
    11             CodedOutputStream cos = CodedOutputStream.CreateInstance(stream);
    12             person.WriteTo(cos);
    13             cos.Flush();
    14         }
    15
    16         // 从文件反序列化到对象
    17         using (var stream = File.OpenRead("person.bin"))
    18         {
    19             CodedInputStream cis = CodedInputStream.CreateInstance(stream);
    20             PersonMessage pm = PersonMessage.ParseFrom(cis);
    21             Debug.Log("从person.bin反序列化到对象:");
    22             Debug.LogFormat("person‘s name:{0}, person‘s age:{1}, person‘s phone:{2}", pm.Name, pm.Age, pm.Phone);
    23         }

    查看生成的person.bin

  3. 执行后unity3d打印的输出
时间: 2025-01-01 03:10:43

在Unity3d中使用Google.ProtocolBuffers的相关文章

《炉石传说》架构设计赏析(7):使用Google.ProtocolBuffers处理网络消息

这段时间琢磨了一下Unity3D网络游戏开发中的网络消息处理.网络游戏的服务端一般都是自主开发的,所以对应的网络消息处理也要自己开发.客户端/服务端之间的消息传到目前使用JSON和Google.ProtocolBuffers是两种常见的做法.打开炉石的代码看了看它的处理方式,感觉代码写的还是很好的,把它的思路分析一下,与大家分享. 整体机制描述 我们想要达到的目标大概是这样的: 有N个网络消息,每个消息对应一个Proto中的message描述: 每个消息对应一个数字ID: 底层在收到消息是,将其

Unity3D中简单的C#异步Socket实现

Unity3D中简单的C#异步Socket实现 简单的异步Socket实现..net框架自身提供了很完善的Socket底层.笔者在做Unity3D小东西的时候需要使用到Socket网络通信.于是决定自己研究研究. 经过不懈努力..O(∩_∩)O哈哈~..自我夸奖一下.终于搞定了.SimpleSocket.cs 由于笔者本身并不是专业的C#程序员.O(∩_∩)O哈哈~.大神就可以直接忽视这篇文章了.顾名思义.哈哈简单的Socket.给那些没接触的盆友参考借鉴下吧.服务社会了 注释一: 本例在编码上

如何在Unity 3D中设置Google AdMod

在Unity中启用Google广告游戏,你需要做到如下所示:要求– Unity 4或者更高(链接:https://github.com/)– 谷歌移动广告SDK(链接:https://github.com/) 安装1.通过访问以下网址转到谷歌的游戏开发者页面:https://github.com/. 2.导航到页面上的“Unity”部分. 3.在本节将有两个按钮(如“下载插件”和“查看源代码”).点击“下载插件”按钮.这将带给你一个GitHub的页面,你可以下载“谷歌移动广告'Unity包.查找

unity3d中的物体,在Scene窗口中可以看到,而在Game窗口中看不到的原因

unity3d中的物体,在Scene窗口中可以看到,而在Game窗口中看不到的原因: 多半是因为物体所属Layer与照相机的culling mask不一致导致的,或者超出照相机的可视范围. 如果游戏中有多个相机,每个相机都有自己的可视范围和culling mask,物体在移动的过程中,进入不同的相机,其可见性可能是变化的,取决与物体所属Layer与当前相机是否一致

(转)Unity3D中移动物体位置的几种方法

1. 简介 在unity3d中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在空间中的状态,它包括 位置(position), 旋转(rotation)和 缩放(scale). 其实所有的移动都会导致position的改变,这里所说的通过Transform组件来移动物体,指的是直接操作Transform来控制物体的位置(position). 2.1 Transform.Tra

Windows系统Unity3D中的快捷键

[狗刨学习网] Windows系统Unity3D中的快捷键[td] 组合键 键 功能 File 文件 Ctrl   N New Scene 新建场景 Ctrl   O Open Scene 打开场景 Ctrl   S Save Scene 保存 Ctrl Shift S Save Scene as 保存场景为 Ctrl Shift B Build Settings... 编译设置... Ctrl   B Build and run 编译并运行 Edit 编辑 Ctrl   Z Undo 撤消 C

Unity3D中的Coroutine详解

Unity中的coroutine是通过yield expression;来实现的.官方脚本中到处会看到这样的代码. 疑问: yield是什么? Coroutine是什么? unity的coroutine程序执行流程怎么那么奇怪? unity中的coroutine原理是什么,怎么实现的? 使用unity的coroutine需要注意什么问题? 一.yield的在几种语言中的程序执行特性: Lua中的yield是使得协同函数运行->挂起并且传递参数给resume.resume使得协同函数挂起->运行

Unity3D中定时器的使用

源地址:http://unity3d.9tech.cn/news/2014/0402/40149.html 在游戏设计过程中定时器是必不可少的工具,我们知道update方法是MonoBehavior中一个人人皆知的定时器方法,每帧都在调用,那还有其他什么定时器的方法呢,这里介绍一下. 1.Invoke(string methodName,float time) 在一定时间调用methodName函数 1 2 3 4 5 6 7 8 9 10 11 12 13 using UnityEngine;

Unity3D中的序列化测试

Unity3D中序列化字段常使用[SerializeField],序列化类常采用[System.Serializable],非序列化采用[System.NonSerialized]. 序列化类使用时发现一些区别.测试如下: (1) 将脚本第一次拖拽到场景中后,运行程序.发现,对类进行序列化后,id,name会保持在代码中写的字段值. 如果我们退出运行,对检视面板的值进行修改,再运行,如下图所示.那么会始终运行检视面板中修改的值! 如果我们退出运行,对代码中的值进行修改,再运行,如下图所示.那么发