为了减少手机客户端与服务交换的数据量,项目决定使用protobuffer
相关的protobuffer介绍:https://developers.google.com/protocol-buffers/docs/overview
下面介绍我是怎么在我项目中安装protobuffer的,不足之处请指出
环境
1.mac Xcode
2.cocos2d-lua 3.9 版本
3.protoc-gen-lua: https://github.com/sean-lin/protoc-gen-lua
4.protobuf:https://code.google.com/p/protobuf/(翻墙获取)
安装说明
1.pb.c文件相关配置
1.1 在下载的protoc-gen-lua中$protobuf/路径下的"pb.c"文件放到cocos2d项目目录中,并添加到项目中
1.2进入游戏入口“AppDelegate.cpp”文件
1.2.1在文件的头部添加:
extern"C" { int luaopen_pb(lua_State* L);} 如下图
1.2.2 在文件applicationDidFinishLaunching()方法实现处添加
luaopen_pb(LuaEngine::getInstance()->getLuaStack()->getLuaState());
注意:这里需要添加到所有绑定 lua 接口的后面,因为 luaopen_pb() 会改变 lua 的全局环境2.将$lua-protobuf/protoc-gen-lua/protobuf/路径下的全部.lua文件copy到cocos2dx项目的lua开发目录
3.在游戏lua的主函数main.lua文件中添加搜索protobuf的搜索目录,上图的搜索目录添加为:
cc.FileUtils:getInstance():addSearchPath("src/app/network/protobuf/")
4. 在游戏lua的主函数main.lua文件中require一下protobuf目录下所有的“.lua”文件
5.修改刚添加protobuf目录下的所有“.lua”文件,在文件的末尾加入“return _M” 将lua的局部变量返回出来
6.调用(proto文件生成的)lua对象的“.lua”文件的时候必须在main.lua文件中的require "cocos.init"前先require一下(cocos.init会对全局_G做修改,使其不能再添加模块)