cocos2dx使用lua和protobuf
来源:未知 责任编辑:责任编辑 发表时间:2013-12-06 08:43 点击:次
为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试。
p>
p>socket使用的是cocos2dx集成的websocket。
p>
p>先说下环境:cocos2d-x-2.2.1 + protobuf 2.5.0 + protoc-gen-lua + Python 2.7.5
p>
p>
p>1.在protobuf目录下依次执行如下命令
p>
p>[plain]
p>python setup.py build
p>python setup.py install
p>
p>2.在protoc-gen-lua目录下的plugin目录中新建protoc-gen-lua.bat文件,并将如下内容粘贴到里面
p>[plain]
p>@python <你的目录>\protoc-gen-lua\plugin\protoc-gen-lua
p>
p>3.生成protobuf对应的lua文件,执行如下命令:
p>[plain]
p><你的路径>/protoc.exe --lua_out=./ --plugin=protoc-gen-lua="<你的路径>\protoc-gen-lua\plugin\protoc-gen-lua.bat" test.proto
p>执行完后就会生成test_pb.lua文件。
p>4.使用cocos2dx的create_project.py创建lua工程;
p>
p>5.将protoc-gen-lua/protobuf目录下的pb.c文件复制到lua工程的Classes目录下,并加入到C++工程中;
p>
p>6.将protoc-gen-lua/protobuf目录下的所有lua文件复制到lua工程的Resources目录下;
p>
p>7.编辑AppDelegate.cpp文件,添加如下代码:
p>
p>[cpp]
p>extern "C"{
p>#include <lua.h>
p>#include <lualib.h>
p>#include <lauxlib.h>
p> int luaopen_pb (lua_State *L);
p>}
p>
p>8.在AppDelegate::applicationDidFinishLaunching()方法中加入初始化方法:
p>[cpp]
p>luaopen_pb(tolua_s);
p>
p>9.此时对lua工程进行编译,如果出错,请检查并修正;编译通过,并且可以正常运行后继续下面的步骤;
p>10.cocos2dx默认产生的lua工程包含2个文件hello.lua与hello2.lua,打开hello2.lua,将如下内容添加到文件末尾(因为我使用的是websocket,各位可根据自己的实际情况进行修改):
p>
p>[javascript]
p>local wsProtobuf=nil
p>function testProtobuf()
p> wsProtobuf = WebSocket:create("ws://localhost:8080/web")
p> local function onOpen(strData)
p> print("socket open ...")
p> require "test_pb"
p> local msg=test_pb.Message()
p> msg.id=101
p> local person =test_pb.Person()
p> person.id=111
p> person.name="user1"
p> person.email="a1@a.a"
p> msg.data=person:SerializeToString()
p> local pb_data = msg:SerializeToString()
p> local t={string.byte(pb_data,1,-1)}
p> wsProtobuf:sendBinaryMsg(t,table.getn(t))
p> end
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>