分享一下我老师大神的人工智能教程!零基础,通俗易懂!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