quick-cocos2d-x + Lua 开发
本文将详细介绍如何在 Eclipse 中搭建 quick-cocos2d-x 的 Lua 开发环境,以及如何配置调试环境以实现断点调试。
搭建开发环境
1. 安装 Lua 开发工具
你有两种选择来安装 Lua 开发工具:
- 给 Eclipse 安装一个 Lua 的插件(可通过 Google 搜索获取)。
- 直接下载 LDT 集成开发环境,其官网为 http://www.eclipse.org/koneki/ldt/,目前稳定版本是 0.9。
2. 克隆 quick-cocos2d-x 代码
使用 Git 工具克隆 quick-cocos2d-x 代码仓库:
git clone https://github.com/dualface/quick-cocos2d-x
例如,你可以将代码放在 E 盘。如果你后续需要重新编译 quick,需要执行 git submodule update 来更新 cocos2dx 的代码,具体操作可参考 quick 的说明文档。
3. 运行示例项目
尝试运行 E:\quick-cocos2d-x\sample\CoinFlip\run_simulator_win32.bat。如果你使用的是 XP 系统,可能会弹出无法定位 inet_ntop 等错误。这是因为 quick 中使用了 LuaSocket,而它使用了一些 WinXP 不支持的系统 API。你可以通过以下方式解决:
将 https://github.com/laomoi/c2x_lua_bindings/tree/master/luasocket_winxp_patch 里的 3 个文件替换掉 lua_extension/socket 里的文件,然后重新编译生成模拟器。
4. 创建 Lua 项目
打开 LDT,新建一个 Lua 项目,这里以 sample\CoinFlip 为例。
5. 了解 LDT 的执行环境
LDT 自带了一个 Lua 5.1 的执行环境,主要用于实现代码提示功能,默认支持 Lua 5.1 的一些系统 API,如 io、os、math 等。
6. 自定义执行环境
为了支持 Cocos2dx 和 quick 额外添加的一些 Lua binding 和 quick framework 的语法提示,我们需要重新制作一个执行环境来替换默认的 Lua 5.1 执行环境。
详细制作过程可参考 https://github.com/laomoi/lua_complete_eclipse,这里我们可以直接下载之前生成好的执行环境,然后添加到项目中。
添加成功后,项目目录下应该会显示 quickLua(如果 debugger.lua 没有也不要紧,后续步骤会添加)。如果此时还未看到 quickLua,可以在项目属性里,依次选择 Lua -> BuildPath -> Libraries,点击 Add Library 重新添加 quickLua。
7. 验证语法提示功能
在代码里尝试输入代码,查看是否能弹出语法提示。
配置调试环境
8. 启动调试侦听器
点击 LDT 的 debug 按钮,会启动一个调试侦听器,等待 Lua 程序通过 socket 连接进来,默认超时时间为 30 秒。
9. 引入调试文件
Lua 程序要连接到调试侦听器,需要 LuaSocket 的支持(参考第 3 步说明),同时需要在项目里引入一个 debugger.lua 文件,该文件可以在 LDT 里面生成导出。
不过,0.9 版本的 LDT 默认导出的 debugger 文件不支持 LuaJIT,而 quick 使用了 LuaJIT2,所以我们需要使用他人制作好的 debugger.lua 文件:
gist.github.com/jdesgats/5383865/raw/56591f94f48a253a821a5610525b402206c3df96/debugger.lua
将其直接下载并拷贝到你的 scripts 目录里。然后在项目的 Lua 代码开头(如 game.lua 或 main.lua)添加以下代码:
local initconnection = require("debugger")
initconnection('127.0.0.1', 10000, 'luaidekey')
10. 进行断点调试
在 scene/MenuScene 开头添加一个断点,然后在 LDT 中开启调试侦听,接着运行 sample\CoinFlip\run_simulator_win32.bat。如果一切顺利,你会看到模拟器启动后停在断点处。
11. 解决无法跳入框架代码的问题
在调试时,你可能会发现无法跳入 quick framework 里的代码,例如 display.lua 里的函数执行无法跳入。简单的解决方法是:
将 framework 拷贝到你的项目目录,然后注释掉 main.lua 里的 CCLuaLoadChunksFromZip("res/framework_precompiled.zip"),再进行调试就可以跳入 display.lua 了。
12. 检查代码解析问题
LDT 默认会解析执行环境和 build-source 里面的 Lua 文件。如果你发现自己写的 Lua 文件没有被解析到,请检查以下两点:
- 文件路径:确保你的代码文件在 build-source 里,可通过右键属性,选择
build,查看source-path来确认。 - 注释格式:是否依照了 LDT 规定的文档格式写了注释,参考 http://wiki.eclipse.org/Koneki/LDT/User_Area/Documentation_Language。