`
aigo
  • 浏览: 2648737 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

ios开发中使用cocos2dx、lua和protobuf

阅读更多

 原文:http://www.cnblogs.com/hanframe/p/3582832.html

 

为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试。

socket使用的是cocos2dx集成的websocket。

 

先说下环境:cocos2d-x-2.2.1 + protobuf 2.5.0 + protoc-gen-lua + Python 2.7.5

 

1.在protobuf目录下依次执行如下命令

python setup.py build  
python setup.py install  

 

 

2.在protoc-gen-lua目录下的plugin目录中新建protoc-gen-lua.bat文件,并将如下内容粘贴到里面

@python <你的目录>\protoc-gen-lua\plugin\protoc-gen-lua  

 

 

3.生成protobuf对应的lua文件,执行如下命令:

<你的路径>/protoc.exe --lua_out=./ --plugin=protoc-gen-lua="<你的路径>\protoc-gen-lua\plugin\protoc-gen-lua.bat" test.proto  

 

执行完后就会生成test_pb.lua文件。

 

4.使用cocos2dx的create_project.py创建lua工程;

 

5.将protoc-gen-lua/protobuf目录下的pb.c文件复制到lua工程的Classes目录下,并加入到C++工程中;

 

6.将protoc-gen-lua/protobuf目录下的所有lua文件复制到lua工程的Resources目录下;

 

7.编辑AppDelegate.cpp文件,添加如下代码:

extern "C"{    
#include <lua.h>    
#include <lualib.h>    
#include <lauxlib.h>    
    int luaopen_pb (lua_State *L);    
}  

 

 

8.在AppDelegate::applicationDidFinishLaunching()方法中加入初始化方法:

luaopen_pb(tolua_s);  

 

 

9.此时对lua工程进行编译,如果出错,请检查并修正;编译通过,并且可以正常运行后继续下面的步骤;

 

10.cocos2dx默认产生的lua工程包含2个文件hello.lua与hello2.lua,打开hello2.lua,将如下内容添加到文件末尾(因为我使用的是websocket,各位可根据自己的实际情况进行修改):

local wsProtobuf=nil  
function testProtobuf()  
    wsProtobuf = WebSocket:create("ws://localhost:8080/web")  
    local function onOpen(strData)  
        print("socket open ...")  
        require "test_pb"  
        local msg=test_pb.Message()  
        msg.id=101        
        local person =test_pb.Person()  
        person.id=111  
        person.name="user1"  
        person.email="a1@a.a"  
        msg.data=person:SerializeToString()  
        local pb_data = msg:SerializeToString()  
        local t={string.byte(pb_data,1,-1)}  
        wsProtobuf:sendBinaryMsg(t,table.getn(t))  
    end  
    local function onMessage(strData)  
        print("socket message ...")  
    end  
    local function onClose(strData)  
        print("socket close ...")  
    end  
    local function onError(strData)  
        print("socket error")  
    end  
      
    if nil ~= wsProtobuf then  
        wsProtobuf:registerScriptHandler(onOpen,kWebSocketScriptHandlerOpen)  
        wsProtobuf:registerScriptHandler(onMessage,kWebSocketScriptHandlerMessage)  
        wsProtobuf:registerScriptHandler(onClose,kWebSocketScriptHandlerClose)  
        wsProtobuf:registerScriptHandler(onError,kWebSocketScriptHandlerError)  
    end   
end  

 

 

11.然后在hello.lua中调用testProtobuf()函数即可。

 

测试运行,你可以在服务器端查看收到的消息。

分享到:
评论

相关推荐

    quick cocos-2d lua +protobuf+luasocket网络封装类

    由于项目使用了protobuf,运行该Demo的前提是把protobuf集成到你的开发软件里。 该例子封装好了在quick cocos-2d lua 中基于luaSocket和protobuf的网络通信。

    cocos2dx lua解密工具

    cocos2dx lua 解密工具xxtea_decrypt,非常好用,直接就可以反编译出来

    cocos2dx_lua开发笔记

    总结起来,这篇笔记提供了cocos2dx_lua开发中的一些基础和进阶操作,对于使用这个引擎进行游戏开发的人员来说,尤其是一些解决隐蔽bug的方法,具有很高的参考价值。通过学习和理解这些笔记,开发者能够更好地理解和...

    quick cocos2dx lua -v3.3

    通过集成 Lua 脚本语言,Quick Cocos2d-x Lua v3.3 能够显著减少开发过程中繁琐的编译步骤,让开发者更加专注于游戏的核心逻辑和创意实现。 ##### 3.4 丰富的功能库支持 该版本内置了一系列功能强大的库和工具,如...

    cocos2dx lua 热更demo

    Cocos2dx是一个开源的游戏开发框架,主要支持C++,同时提供了Lua和JavaScript的绑定,使得开发者可以选择不同的脚本语言进行游戏逻辑的编写。在这个"**cocos2dx lua 热更demo**"中,重点是实现了lua脚本的热更新功能...

    cocos2dx集成protobuf android版

    4. **导入生成的Java代码**:将生成的Java类导入到你的Cocos2dx项目中,这样就可以在游戏的业务逻辑中使用这些类进行数据操作了。 5. **避免使用message嵌套和group**:虽然protobuf支持消息嵌套和group,但在游戏...

    cocos2dx 游戏开发系列之三 源码

    在游戏开发领域,cocos2dx是一个广泛使用的开源游戏引擎,尤其在跨平台开发中扮演着重要角色。本篇将深入探讨cocos2dx游戏开发系列的第三部分——源码解析和Android工程的创建与迁移。 首先,cocos2dx是基于C++的,...

    cocos2dx lua绑定

    总结来说,"cocos2dx lua绑定"是一个将C++游戏引擎Cocos2d-x与脚本语言Lua相结合的技术,通过tolua++等工具自动或手动创建绑定,使开发者能用Lua编写游戏逻辑,享受其简易性和高效性,同时利用C++进行性能关键部分的...

    Cocos2dx lua版的富文本框

    Cocos2d-x是一款流行的开源游戏开发框架,广泛用于创建2D游戏、应用程序和互动媒体。在Cocos2d-x的Lua版本中,富文本框(TextArea)是开发者用来显示和编辑多格式文本的重要组件。它支持自动换行、手动换行、字体...

    cocos2d-lua整合到ios工程

    - 在需要使用Cocos2d-x的源代码文件中,引入必要的头文件,如`#import "cocos2d.h"`,并添加`#define COCOS2DX_H`来启用Cocos2d-x的Lua接口。 4. **初始化Cocos2d-x**: - 在你的AppDelegate.m文件中,导入Cocos...

    cocos2d-lua 实现富文本

    在游戏开发领域,Cocos2d-x 是一个广泛使用的开源跨平台2D游戏引擎,而 Lua 是一种轻量级的脚本语言,常被用作 Cocos2d-x 的脚本接口,即 Cocos2d-lua。在这个场景下,“cocos2d-lua 实现富文本”意味着我们要探讨...

    cocos2d_lua 3D搓牌效果

    在移动游戏开发领域,cocos2d_lua是一个广泛使用的框架,它将强大的2D和3D图形渲染能力与灵活的Lua脚本语言相结合,为开发者提供了高效的游戏开发环境。本文将深入探讨如何利用cocos2d_lua实现3D搓牌效果,以及如何...

    cocos2dx-lua 笔记

    四、Cocos2dx-Lua 游戏开发流程 1. 创建项目:使用 Cocos Console 或者 Xcode、Android Studio 等工具创建新的 Cocos2d-x Lua 项目。 2. 编写 Lua 脚本:在项目的 scripts 目录下,编写游戏的各个模块,如主菜单、...

    lua_cocos2dx_dragonbones_auto.rar

    cocos2dx-lua Dragonbones龙骨C++方法lua-binding文件,lua_cocos2dx_dragonbones_auto.hpp,lua_cocos2dx_dragonbones_auto.cpp

    cocos2dx斗地主服务端,客户端在我的资源列表中

    Cocos2dx能够跨平台运行,通过Cocos2dx的iOS绑定,开发者可以使用相同的代码库在iPhone和iPad上部署游戏。 【文件结构】 虽然"Server"是唯一列出的子文件夹,但我们可以假设它包含了服务端的全部代码和资源。通常,...

    基于ldt的cocos2d x lua代码提示 cocos2dx版本2 2 3

    在IT行业中,Cocos2d-x是一个非常流行的开源游戏开发框架,它允许开发者使用C++、Lua或JavaScript来创建跨平台的游戏。Cocos2d-x 2.2.3是该框架的一个较早版本,虽然现在已经有了更新的版本,但这个版本依然在许多...

    Cocos2dx中UIWebView替换为WKWebView

    在iOS开发中,Cocos2dx是一个广泛使用的游戏开发框架,它允许开发者创建跨平台的2D和3D游戏。然而,随着Apple对App Store审核政策的调整,使用UIWebView的App将不再被接受,因为Apple已经将其列为弃用API。在2020年...

    cocos2dx +lua 斜45度A星寻路算法

    cocos2dx +lua 斜45度A星寻路算法 lua实现 使用 Astar:getInstance():InitAstar(阻挡数组,地图宽,地图高) Astar:getInstance():GetPath(起点,终点,true) 返回路径点

    cocos2d-lua版消消乐源码

    在lua中,我们可以使用`ccs.SceneReader`或`ccui.WidgetReader`来加载这些资源,构建游戏场景和UI元素。 - **src**目录:这里是源代码的主体部分,包括lua脚本文件,用于实现游戏逻辑、界面交互以及各种事件处理。 ...

Global site tag (gtag.js) - Google Analytics