Cocos2dx Lua开发环境搭建

本文记录在 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 版本的。

  • 创建 cocos2dx lua 项目

到需要创建项目的目录下运行以下命令

  • 下载安装 VS 插件 BabeLua

https://babelua.codeplex.com/releases 主站下载(国外站点,可下载最新源码)
http://pan.baidu.com/s/1sjmC169 国内镜像(速度较快)

这里使用的是 BabeLua3.2.2.0 版本,下载完成后双击运行 vs 进行安装。

  • 生成 simulator

打开项目目录下 frameworks\runtime-src\proj.win32\dblua.sln 文件。

点击运行按钮,或者按 F5 键开始编译并运行项目。

等待编译完成之后,项目下 \simulator\win32\ 目录中就会生成 textlua.exe ,这个就是运行 lua 脚本的主程序,也就是 simulator。

配置 Lua 项目


  • 创建 visual studio lua 项目

前面安装完 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)  
cocos2d-x 3.10版本, exe 是执行文件  src是脚本文件夹 res是资源文件夹
lua脚本在src里面,但是BabeLua设置的脚本路径没有生效,导致找不到脚本

后来在 AppDelegate.cpp里面把src加到搜索路径下,就可以调试得到了

LuaStack* stack = engine->getLuaStack();  
stack->addSearchPath("src/");  

然后按 F5 键运行程序,这时终端输出里应该就不会出现 file not exist 提示了。

然后打个断点试试看吧。

不过这里还会有个坑,会发现打的断点可能会无效,所以还需要进一步修改。要指定下运行目录,这里就要用到cocos2dx 模拟器的 -workdir 参数。

右键 lua 项目 -> 属性,在 Command line 里面加入 -workdir,(-workdir之后一定加空格)如下

Cocos2dx Lua开发环境搭建_第1张图片

路径填项目的根目录,让程序取项目根目录下的资源,保存,然后按 F5 运行,这时再调试应该就一切正常了,每次修改完 lua 脚本,也不用执行编译,直接 F5 即可看到最新改动的运行情况。

编写代码时vs不会自动对 lua代码进行自动补全,所以要添加cocos2d自动补全词库

cocos2d-x词库下载:http://pan.baidu.com/s/1sjmC169

选择下载对应版本的cocos2d-x词库文件,放在【我的文档】【BabeLua】【Completion】目录下,重新启动VS即可。

Cocos2dx Lua开发环境搭建_第2张图片


快速搜索关键字

 Cocos2dx Lua开发环境搭建_第3张图片

(1)在打开的Lua文件中按住Alt键,鼠标双击变量名即可快速搜索关键字。

(2)点击搜索结果可以跳转到相应的Lua文件行。

(3)在此处可以直接输入关键字名称进行搜索。

(4)点此按钮可以切换“Search Result”窗口中显示路径的方式:绝对或相对路径。

Lua调试

开始调试

 Cocos2dx Lua开发环境搭建_第4张图片

如上图所示:

(1)双击打开hello.lua文件,系统会自动创建一个名称为temp_HelloLua的临时VS项目

(2)在hello.lua文件中设置好断点(设置断点快捷键F9)

(3)右键点击temp_HelloLua将其设置为启动项目

然后按F5启动HelloLua.exe进程开始调试

查看变量、堆栈信息、输出信息

命中断点后,可以查看变量及堆栈信息,如下图:

 Cocos2dx Lua开发环境搭建_第5张图片

(1)堆栈信息

(2)监视变量

(3)鼠标移动到变量上即可查看变量值

(4)断点信息

(5)输出信息

按F10逐过程,F11逐语句进行跟踪调试。


关于VS2013+BabeLua环境的一些比较有用的快捷键

开发过程中如果不适用快捷键,只是单纯的靠鼠标,靠菜单,效果是非常低下的,为了提高开发速度,有必要了解一些常用的快捷键。(显而易见的省去不写了,如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(结合自己实践,有部分修改)

你可能感兴趣的:(#,1.1,cocos2d-x)