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  
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1