项目后期Lua接入笔记05--网络协议protobuf在lua中的使用pbc

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       

作为一个网络游戏,不可避免的要和服务端进行数据交互,在数据结构上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文件,一键处理,这里将所有协议一起打包了,也可以分文件打包。

cd %~dp0cd protoxcopy E:\*.proto %cd% /Y..\protoc.exe   --descriptor_set_out=./../Game.pb ./*.proto
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里修改下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)
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

消息序列化并发送给服务端

local addressbook = {        name = "Alice",        id = 12345,        phone = {            { number = "1301234567" },            { number = "87654321", type = "WORK" },        }    }    local code = protobuf.encode("tutorial.Person", addressbook);    --向服务端发送消息
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

接收服务端的消息并反序列化

local decode = protobuf.decode("tutorial.Person" , data)
  
  
  • 1
           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值