本文记录在 Windows 下搭建 cocos2dx lua 开发环境,还有调试设置。
系统:Windows 7 64
IDE:Mircrosoft Visual Studio 2013
Cocos2dx:cocos2d-x-3.13.1
VS插件:BabeLua3.2.2.0
下载 cocos2dx 源码,并运行 setup.py 脚本,该脚本为 python 脚本,所以系统还要先安装 python,最好是 2.7 版本的。
到需要创建项目的目录下运行以下命令
1
|
cocos
new
testlua
-
p
com
.testlua
-
l
lua
|
https://babelua.codeplex.com/releases 主站下载(国外站点,可下载最新源码)
http://pan.baidu.com/s/1sjmC169 国内镜像(速度较快)
这里使用的是 BabeLua3.2.2.0 版本,下载完成后双击运行 vs 进行安装。
打开项目目录下 frameworks\runtime-src\proj.win32\dblua.sln 文件。
点击运行按钮,或者按 F5 键开始编译并运行项目。
等待编译完成之后,项目下 \simulator\win32\ 目录中就会生成 textlua.exe ,这个就是运行 lua 脚本的主程序,也就是 simulator。
前面安装完 BabeLua 插件后,在 vs 的主菜单上会出现 Lua 菜单,点击菜单中的 New Lua Project,填写内容如下:
Lua script folder:lua 脚本目录
Lua exe path:lua 主程序目录,也就是之前的 simulator
Working path:lua 运行环境目录
Lua project name:在 VS 解决方案中显示的项目名称
Command line:执行命令,这个可以先不管
点击 OK 就会在解决方案中出现 src 项目,同时加载了 lua 文件夹中所有 lua 脚本。
接着将 src 项目设置为启动项目,在资源管理器右键 src项目 > 设置为启动项,这时按 F5 键应该就可以正常启动程序了。
如果启动后程序运行有异常,比如黑屏不显示图片什么的,不着急,继续往下看。
这里需要注意的是 BabeLua 3.2.2.0 版本会有个路径 BUG ,在调试时使用的 Lua scripts folder 目录会使用配置好的上一级目录,在执行调试时,在终端输出中会显示一堆的 file not exist 信息,所以还要对配置进行调整。
错误如下:
relative: .\src/main.lua
findfile: \win32\src\main.lua
Load script(11): \win32\src\main.lua
relative: .\config.lua
findfile: .\config.lua
Load script(12): \config.lua relative (file not exist)
relative: .\cocos/init.lua
findfile: .\cocos/init.lua
Load script(13): \cocos\init.lua relative (file not exist)
LuaStack* stack = engine->getLuaStack();
stack->addSearchPath("src/");
然后按 F5 键运行程序,这时终端输出里应该就不会出现 file not exist 提示了。
然后打个断点试试看吧。
不过这里还会有个坑,会发现打的断点可能会无效,所以还需要进一步修改。要指定下运行目录,这里就要用到cocos2dx 模拟器的 -workdir 参数。
右键 lua 项目 -> 属性,在 Command line 里面加入 -workdir,(-workdir之后一定加空格)如下
路径填项目的根目录,让程序取项目根目录下的资源,保存,然后按 F5 运行,这时再调试应该就一切正常了,每次修改完 lua 脚本,也不用执行编译,直接 F5 即可看到最新改动的运行情况。
编写代码时vs不会自动对 lua代码进行自动补全,所以要添加cocos2d自动补全词库
cocos2d-x词库下载:http://pan.baidu.com/s/1sjmC169
选择下载对应版本的cocos2d-x词库文件,放在【我的文档】【BabeLua】【Completion】目录下,重新启动VS即可。
(1)在打开的Lua文件中按住Alt键,鼠标双击变量名即可快速搜索关键字。
(2)点击搜索结果可以跳转到相应的Lua文件行。
(3)在此处可以直接输入关键字名称进行搜索。
(4)点此按钮可以切换“Search Result”窗口中显示路径的方式:绝对或相对路径。
如上图所示:
(1)双击打开hello.lua文件,系统会自动创建一个名称为temp_HelloLua的临时VS项目
(2)在hello.lua文件中设置好断点(设置断点快捷键F9)
(3)右键点击temp_HelloLua将其设置为启动项目
然后按F5启动HelloLua.exe进程开始调试
命中断点后,可以查看变量及堆栈信息,如下图:
(1)堆栈信息
(2)监视变量
(3)鼠标移动到变量上即可查看变量值
(4)断点信息
(5)输出信息
按F10逐过程,F11逐语句进行跟踪调试。
开发过程中如果不适用快捷键,只是单纯的靠鼠标,靠菜单,效果是非常低下的,为了提高开发速度,有必要了解一些常用的快捷键。(显而易见的省去不写了,如Ctrl+A、Ctrl+V等)
Ctrl+1: 打开BabeLua的文件管理器
Ctrl+2: 打开函数和成员变量的窗口
Ctr+p: 查找当前文件中的函数或成员变量
Alt+L: 查找lua文件
Ctrl+L: 删除当前行
Ctrl+Enter: 在当前行的上一行插入一行(写function时经常用到,敲完end后,Ctrl+Enter,然后加一个Tab)
Shift+Ctrl+Enter: 在当前行的下一行插入一行
Ctrl+C: 复制当前行(只要把光标停在这一行就行,不要选择,否则就只复制选择的内容了)
Ctrl+C, Ctrl+V: 在当前行的下一行复制本行(下下行会多出一个空行,可以接着敲一个Ctrl+L删除)
Ctrl+左右箭: 跳过单词(相当于vim中的b与e)
Ctrl+PageUp: 光标跳到当前屏幕的最上方(只是光标移动,代码不动)
Ctrl+PageDown: 光标跳到当前屏幕的最下方(只是光标移动,代码不动)
Shift+组合键: 选中区域(想脱离鼠标这个快捷键不错)
Shift+Alt+组合键: 选中区域,列选择
Ctrl+F: 查找并高亮(高亮还是蛮好的,可以查当前变量在当前函数的使用情况)
F3: 查找的内容的下一个出现的地方(尽量用这个代替Ctrl+F之后的Enter)
Shift+F3: 查找的内容的上一个出现的地方
Ctrl+K,Ctrl+K: 在当前行打个书签(或取消书签)
F2: 跳到下一个标签
Shift+F2: 跳到上一个标签
这三个组合起来用功能还是很强大的 , 我经常在找bug或者在看其他人写代码的时候用,与断点调试配合使用效果很好
Ctrl+K,Ctrl+L: 取消所有书签(分析完了,可以取消所有书签,以免影响下面的分析)
Ctrl+H,Ctrl+H: 在当前行标记任务或取消当前行的任务(我们在工作中经常容易被打断,此时不妨在当前行做个标记,等解决完其他问题后再从任务列表中回来继续做未完成的事;另外,在写一个新的模块式,我们先搭框架,然后可以在每个尚未写的函数处写一行TODO注释,然后用Ctrl+H,Ctrl+H记到任务列表中,任务完成再删去该任务)
Ctrl+K,Ctrl+F: 自动调整代码缩进(该快捷键其实还有个附加功能,即查语法错误,选中代码的一块区域,如果理论上可缩进,而实际上却没有缩进,这段代码中肯定有语法错误,如果已知某个文件中有语法错误,则可以利用此快捷键二分查找)
Ps:可以打开VS2013的滚动条看代码缩略图,如果上面有红点点,不是打断点就是有语法错误。既然这里谈到调试,再说一个小技巧:将--[["--[[]]加到lua代码中,如果能消除语法错误,则可以知道在此之前某个地方的引号或多行注释没有结束。
tips
如果发现启动调试比较慢,可以尝试安装秒起补丁
http://forum.cocos.com/t/babelua-1-06-quick-vs2013-vs2015-5-21/36553
扩展阅读
BabeLua官方博客 http://blog.csdn.net/babestudio/article/details/27222141
BabeLua项目地址 https://babelua.codeplex.com/
转载地址: http://blog.tshine.me/cocos2dx-lua%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA.html(结合自己实践,有部分修改)