项目后期Lua接入笔记05--网络协议protobuf在lua中的使用pbc
2017-03-29 19:57
501 查看
作为一个网络游戏,不可避免的要和服务端进行数据交互,在数据结构上protobuf是一个不错的方案,在lua中使用protobuf有多种方案可供选择,这里使用的是云风的pbc.
先去这个网址下载生成工具http://repo1.maven.org/maven2/com/google/protobuf/protoc/,我这边下载的2.5版本。将protoc.exe放到指定的地方,然后将proto文件拷贝过来,为了游戏中更好的工具话,这里将protoc放到了工程lua目录下,然后建立文件夹,将proto文件放到文件夹内,然后启动cmd执行protoc.exe –descriptor_set_out=./../Game.pb ./*.proto。
cmd测试ok的话我们可以新建bat文件,一键处理,这里将所有协议一起打包了,也可以分文件打包。
这里修改下copy的目录,把所有proto文件都拷贝过来,如果想将这个命令作为unity的菜单里,可以参考我以前的文章
lua中使用如下,首先读取文件并注册
消息序列化并发送给服务端
接收服务端的消息并反序列化
先去这个网址下载生成工具http://repo1.maven.org/maven2/com/google/protobuf/protoc/,我这边下载的2.5版本。将protoc.exe放到指定的地方,然后将proto文件拷贝过来,为了游戏中更好的工具话,这里将protoc放到了工程lua目录下,然后建立文件夹,将proto文件放到文件夹内,然后启动cmd执行protoc.exe –descriptor_set_out=./../Game.pb ./*.proto。
cmd测试ok的话我们可以新建bat文件,一键处理,这里将所有协议一起打包了,也可以分文件打包。
cd %~dp0 cd proto xcopy E:\*.proto %cd% /Y ..\protoc.exe --descriptor_set_out=./../Game.pb ./*.proto
这里修改下copy的目录,把所有proto文件都拷贝过来,如果想将这个命令作为unity的菜单里,可以参考我以前的文章
lua中使用如下,首先读取文件并注册
local path = LuaConst.luaDir.."/3rd/pblua/Game.pb";--注意路径 local addr = io.open(path, "rb") local buffer = addr:read "*a" addr:close() protobuf.register(buffer)
消息序列化并发送给服务端
local addressbook = { name = "Alice", id = 12345, phone = { { number = "1301234567" }, { number = "87654321", type = "WORK" }, } } local code = protobuf.encode("tutorial.Person", addressbook); --向服务端发送消息
接收服务端的消息并反序列化
local decode = protobuf.decode("tutorial.Person" , data)
相关文章推荐
- 项目后期Lua接入笔记06--按钮事件监听及消息分发
- 项目后期Lua接入笔记07--预制属性转lua代码
- 项目后期Lua接入笔记11--Lua代码优化2
- 项目后期Lua接入笔记04--宏定义处理HelloWorld
- 项目后期Lua接入笔记03--LuaBehaviour设计
- 项目后期Lua接入笔记01--框架及IDE
- c++ 使用pbc 解决lua 解析protobuf 问题
- 项目后期Lua接入笔记10--Lua代码优化1
- 项目后期Lua接入笔记08--Lua面向对象及LuaBehaviour的再设计
- 项目后期Lua接入笔记09--策划Excel转Lua
- 项目后期Lua接入笔记02--框架剥离
- ProtoBuf for java使用笔记
- SLua 绑定 Protobuf-Lua (protoc-gen-lua) 在SLua中使用 Protobuf
- CocoaAsyncSocket 网络通信使用之Protobuf安装(五)
- Protobuf-Lua 中使用 Enum
- twisted使用protobuf的网络通信方案
- protobuf在C#项目中的使用
- 基于netty的项目中使用protobuf,巧妙定义proto完成不同消息的编码和解码处理 .
- quick-cocos2dx--集成谷歌protobuf与云风pbc项目
- 网络通信Socket+Protobuf协议