Cocos2d-x lua 3.x VS集成Babelua 环境搭建与代码调试
- By Scarb
- Scarb’s Blog
- 最近开始学Cocos2d-x lua,Cocos2d-x lua 环境搭建坑好多,搭了好久。以此博客来记录一下。
1. 创建Cocos2d-x lua项目
- 使用的Cocos2d-x版本: 3.14
Cocos2d-x的环境搭建教程很多,在这里我就不详细讲了。
大致就是从官网下载Cocos2d-x引擎,解压。然后下一个python2.7.x版本,使用python运行setup.py,配置sdk,ndk,ant的路径(不配也可以,一直回车)。完了就配置好了。
接下来要创建Cocos2d-x项目。
配置好环境之后在任何位置开启cmd命令行,使用cocos new
来创建项目。
cocos new projectname -p com.scarb.packagename -l lua
会直接在所在的目录创建cocos2d-x lua项目
-p 后面是包名,-l 后面是语言名
2. 配置Visual Stuio + BabeLua环境
先上一堆教程
BabeLua是一款基于VS2012/2013的免费开源的Lua集成开发环境,在Lua编辑和调试方面有很多优秀的特性。并且支持Cocos2d-x lua的调试
安装教程参考:系列1—BabeLua入门
使用教程参考:使用BabeLua在cocos2d-x中编辑和调试Lua
首先为VS安装BabeLua插件,然后配置好自动补全的api。
创建完cocos2d-x lua项目后,先用VS打开项目编译一遍。
然后把simulator里面的一些文件拷贝到主目录。
(这些是模拟器和配置文件,拷贝到主目录可以与config.json联动,直接运行就可以测试)
点Lua -> New Lua Project 使用BabeLua创建新的项目
如图,这里的Lua exe path不对,要设置为复制在主目录的exe文件
3. 注意事项(坑)
3.1 运行时没有调试框
配置完了,创建一个Hello world项目并且运行,却只有一个Cocos Simulator的框,没有lua调试的小黑框。一般调试框和模拟器框会一起出现,现在却只有一个。找了半天在别人的博客中找到了解决方法。
在main.cpp
中添加代码,在头部添加一个宏定义#define USE_WIN32_CONSOLE
然后在那个函数中添加如下代码。
#ifdef USE_WIN32_CONSOLE
AllocConsole();
freopen("CONIN$","r",stdin);
freopen("CONOUT$","w",stdout);
freopen("CONOUT$",stderr);
#endif
最后效果图:
3.2 无法定义全局变量
不知道从那个版本开始,Cocos2d-x lua 对全局变量的声明做出限制,不允许定义全局变量。如果声明全局变量,那么调试时会出错,并且提示你建议这样写:
cc.exports.varName = XXX
解决方法:
在config.lua
中将CC_DISABLE_GLOBAL = true
设为false
即可。
3.3 print()函数无输出
这也是个坑,lua中print无法显示到调试框中。
解决方法:
在项目里的AppDelegate.cpp
的applicationDidFinishLaunching
里面
加入 engine->executeString("print=release_print");
或者直接在lua代码里面用release_print()
3.4 lua 包引用
在Cocos2d-x lua 3.2 的代码,包引用需要
require "Cocos2d"
require "Cocos2dConstants"
之类,在某个版本之后只需要一条
require "cocos.init"