在 cocos2d 项目中引入 lua

http://blog.raylife.com/index.php/cocos2d-lua-intergration/

这次会介绍一下如果将 Lua 引入到 cocos2d 的项目中去,以便更方便的进行游戏项目调试。

本次测试采用了最新版本的 cocos2d-iphone v1.1,最新版本代码可以从这里下载:Github

Lua 版本采用 5.2.0,请到这里下载:Lua.org

XCode 使用 XCode4。


前面多说一句,如果是第一次使用 cocos2d,那么请在解压 cocos2d 压缩包之后,进入终端窗口,键入“cd ”,然后将 cocos2d 的文件夹拖到终端窗口上。操作正确的话,终端窗口里面会出现该文件夹的路径,然后敲回车,直接进入该文件夹。

键入如下命令,安装 XCode 的模板。

 

sudo ./install-templates.sh

这样 cocos2d 的模板就安装好了。

将下载好的 Lua 文件包解压到一个文件夹,准备好。

然后打开 XCode,创建新项目:

我们选择 cocos2d 模板,创建名为“TestLua”的项目。

可以试着运行一下,iOS 模拟器会启动,并且显示一行“Hello World”在画面中间。

这时查看输出信息,可以看到最后几行如下的跟踪信息:

2012-02-01 21:45:10.452 TestLua[2136:10a03] cocos2d: compiled with VBO support in TextureAtlas : YES
2012-02-01 21:45:10.453 TestLua[2136:10a03] cocos2d: compiled with Affine Matrix transformation in CCNode : YES
2012-02-01 21:45:10.453 TestLua[2136:10a03] cocos2d: compiled with Profiling Support: NO
2012-02-01 21:45:10.527 TestLua[2136:10a03] cocos2d: surface size: 480x320

在 XCode 界面的最左侧选择项目列表的第一行(写着“TestLua”那行),然后在界面中间下方找到“Add Target”,点击它。

在弹出的 Target 对话框中进行如下选择创建静态库的 Target:

给新的 Target 命名为“Lua”,然后再回到左侧项目文件列表上,右键选择“Add Files to “TestLua””:

在弹出的选择框中从   Lua 文件夹 (已将其拷贝到lua文件夹内)--》src文件夹   选择除了lua.c和luac.c文件(these are use to build standalone interpreters and compilers and are not used in library builds)之外所有.c  .h .hpp文件   

 

 

link binary with Libraries   添加libLua.a

 

Target Dependencies   添加   Lua

准备工作就做好了,可以再次运行测试一下,如果一切正常,那么还会看见刚才的画面。


下面开始写测试代码。

在左侧找到 HelloWorldLayer.m 文件,将其改名为 HelloWorldLayer.mm,标识为 C++ 文件。

点击 HelloWorldLayer.mm,XCode 界面右侧就会出现源代码。找到这行:

#import "HelloWorldLayer.h"

在这行代码下面写入如下代码:

//
//
extern "C" {
    #include "lua.h"
    #include "lualib.h"
    #include "lauxlib.h"
};

int runlua(void) {

    lua_State *L = luaL_newstate();

    // load the libs
    luaL_openlibs(L);
    printf("\nLua done!\n");
    lua_close(L);

    return 0;
}

这样,我们就加入了一段最简单的 Lua 代码到程序中。不过这还不算完,我们要调用它试验一下。

还是在 HelloWorldLayer.mm 中,找到 scene 方法,添加针对 runlua 方法的调用:

+(CCScene *) scene
{
    // 'scene' is an autorelease object.
    CCScene *scene = [CCScene node];

    // 'layer' is an autorelease object.
    HelloWorldLayer *layer = [HelloWorldLayer node];

    // add layer as a child to scene
    [scene addChild: layer];

    // 执行 lua 方法
    runlua();

    // return the scene
    return scene;
}

现在,试着再运行一下。

画面没有什么变化,但是看一下输出:

2012-02-01 21:45:10.452 TestLua[2136:10a03] cocos2d: compiled with VBO support in TextureAtlas : YES
2012-02-01 21:45:10.453 TestLua[2136:10a03] cocos2d: compiled with Affine Matrix transformation in CCNode : YES
2012-02-01 21:45:10.453 TestLua[2136:10a03] cocos2d: compiled with Profiling Support: NO
2012-02-01 21:45:10.527 TestLua[2136:10a03] cocos2d: surface size: 480x320

Lua done!

看到最后一行了吗?说明我们的 Lua 代码被正确执行了!这样,我们就成功实现了在 cocos2d 里面对 Lua 程序的调用。

好,现在,该去好好学习 Lua 啦。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值