在Unity3D中使用Protobuf3
Protobuf:平台无关、语言无关、可扩展且轻便高效的序列化数据结构的协议,一般用于网络通信和数据存储
第一步:下载并准备DLL文件
链接:mvn9(或者 https://github.com/protocolbuffers/protobuf/tree/82d3d7d250645322f8a7343188e5ae6246a76414)
先设置下DLL导出版本,不同版本的Unity3D可能对应的net版本不同
- 进入路径:protobuf-3.7.0\csharp\src\Google.Protobuf
- 编辑 Google.Protobuf.csproj 文件,准备设置DLL导出版本(不知道怎么编辑的记事本打开......)
- 找到里面的语句:<TargetFrameworks>netstandard1.0;net45;后面的 net45 就是DLL导出版本,想要同时导出多个版本将版本号用分号隔开就好,如果你不知道要导出的版本是哪个,可以百度一下?(一般来讲Unity2018的都是4.5,2017都是3.5)
之后就可以开始生成DLL了
- 进入路径:protobuf-3.7.0\csharp\src
- 打开 Google.Protobuf.sln 文件(我用的是VS2017)
- 右键 Google.Protobuf 点击生成
- 这个时候再进入路径:protobuf-3.7.0\csharp\src\Google.Protobuf\bin\Debug\net45,里面就是你生成的DLL文件
第二步:Protobuf简单使用
打开 ProtobufTool_Rect 傻瓜包,在里面新建.proto文件如下(随便起名就好):
编辑一下proto文件,在里面输入以下内容
syntax = "proto3"; //proto语法版本
package jaihk662; //包名
message TestForProto //一个message相当于一个类
{string name = 1; //后面的 = 1是参数标签,必须有int32 age = 2;repeated int32 pos = 3; //repeated可以理解为List,等价于List<int> pos;
}
之后你懂得,点击 buildC#.bat 就可以一键生成了,生成的.cs可以在 C#protocs 文件夹中找到
如果生成失败,说明你有语法错误,检查一下.proto内有没有打错字母等......
第三步:在Unity3D中测试
将你第二步生成的.cs文件和第一步生成的.dll文件全部放入你的项目里(放入Assest,建议新建一个文件夹进行管理)
到这一步其实你就已经会用Protobuf了,恭喜!(当然只针对前端)
接下来测试一下,随便新建一个脚本,输入以下代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Jaihk662; //引用.cs文件中的命名空间(.proto文件中的package值)
using Google.Protobuf; //引用DLL
public class AASD : MonoBehaviour
{void Start(){TestForProto toServer = new TestForProto();toServer.Name = "Jaihk662";toServer.Age = 22;for (int i = 5; i <= 7; i++)toServer.Pos.Add(i);//将对象转换成字节数组byte[] databytes = toServer.ToByteArray();//将字节数据的数据还原到对象中IMessage IMperson = new TestForProto();TestForProto toClient = new TestForProto();toClient = (TestForProto)IMperson.Descriptor.Parser.ParseFrom(databytes);Debug.Log(toClient.Name);Debug.Log(toClient.Age);for (int i = 0; i < toClient.Pos.Count; i++)Debug.Log(toClient.Pos[i]);}void Update(){}
}
搞定!
在Unity3D中使用Protobuf3相关推荐
- Unity3D 中 2D_Toolkit插件下载 和 导入方法
Unity3D 中 2D_Toolkit插件下载 和 导入方法 1.你把下载来的包放到 安装目录:Editor\Standard Packages里面. 2.然后按ctrl+9,进入asset sto ...
- Unity3D中暂停时的动画及粒子效果实现
暂停是游戏中经常出现的功能,而Unity3D中对于暂停的处理并不是很理想.一般的做法是将Time.timeScale设置为0.Unity的文档中对于这种情况有以下描述: The scale at wh ...
- Unity3D 中的程序后台运行
Unity3D中程序后台运行,我原本认为当Application.runInBackground=false时,Socket保持连接,但是不接受数据,经过测试并非如此,当Application.run ...
- 工具设置Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节
时间紧张,先记一笔,后续优化与完善. 声明: 本博客文章翻译类别的均为个人翻译,版权全部.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http:/ ...
- unity3d中让物体显示和隐藏
unity3d中让物体显示和隐藏的方法 gameObject.renderer.enabled //是控制一个物体是否在屏幕上渲染或显示 而物体实际还是存在的 仅仅是想当于隐身 而物体本身的碰撞体还 ...
- Unity3d中BlinnPhong光照模型注解
/* * 版本:0.1 最后修改:2012-08-10 撰写:李现民 Unity3D中主要用到的shader(着色器)有三种,除了常规的vertex shader与fragme ...
- Unity3D中关于场景销毁时事件调用顺序的一点记录
先说一下我遇到的问题,我弄了一个对象池管理多个对象,对象池绑定在一个GameObject上,每个对象在OnBecameInvisible时会进行回收(即移出屏幕就回收),但是当场景切换或停止运行程序时 ...
- unity3d双面材质_[转]unity3d中创建双面材质
在其它三维软件中设置好的双面材质导入到unity3d中就失去了效果,不过我们可以通过自定义材质来在unity3d中实现双面材质的效果.步骤如下: 1.在资源库中新建一新shader:代码如下: Sha ...
- 如何将unity3d动画嵌入html,在Unity3D中使用精灵动画引擎制作动画的两种方法
7月28日消息,如今的游戏玩家对于游戏角色的动作要求越来越高,给开发者提出了众多的要求,工作量也相应上升.那么如何才能简单快速地制作角色动画以提升效率呢?下面就和大家分享两个在Unity3D中使用精灵 ...
最新文章
- linux ubuntu 桌面,Ubuntu Linux 入门(三):熟悉 Ubuntu Linux 桌面环境
- python定义方法继承类_Python类的定义、继承及类对象使用方法简明教程
- mysql 调用未定义函数_php – Wierd和Annoying错误:调用未定义的函数mysql_query()[复制]...
- [渝粤教育] 郑州大学 互联网国际政治学 参考 资料
- 关于C++子类父类成员函数的覆盖和隐藏
- linux 端口tnpl,Linux和Windows端口占用情况查看
- 刘作虎曝光一加7真机视频 最流畅的手机来了!
- MATLAB 添加文件路径
- java home centos_Centos7配置JAVA_HOME
- 【转】[FPGA博客大赛](updated)在xilinx的FPGA系统中scanf函数的使用
- Linux基础知识 | vi编辑器
- PDF限制复制怎么办?怎么解决这个问题?
- 阿里P3C自定义规则后本地打包成IDEA插件
- C#读写内存也不差!(发布C#编写的植物大战僵尸作弊器源码)
- “机智歌王”--沙鸥,大陆的的张帝
- 解决通过硬盘或U盘安装ubuntu server出现无法挂载光盘的问题教程
- VUE的路由器的总结
- 下载的caj论文怎么转换成pdf?
- LLMs:《PaLM: Scaling Language Modeling with Pathways》翻译与解读
- PyCharm里面的c、m、F、f、v、p分别代表什么含义?
热门文章
- 零基础学python好学吗-Python0基础好学吗?
- micropython和python区别-什么是 MicroPython ?它有什么优势?
- 快准狠才叫爽!六款智能电视语音识别大比拼
- 1.零基础Java基础教程9天入门
- JavaScript-解构赋值
- java证书 查看cacer_R 语言关于 SSL 证书异常处理笔记
- 前端必须掌握30个CSS3选择器
- LeetCode 530二叉搜索树的最小绝对差
- 2012年软件开发者薪资调查报告
- 响应服务器auth first,asp.net mvc发送QQ邮件提示 命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !...