当前位置 : 主页 > 手机开发 > 其它 >

Cocos2d-x lua 3.x VS集成Babelua 环境搭建与代码调试

来源:互联网 收集:自由互联 发布时间:2021-06-13
Cocos2d-x lua 3.x VS集成Babelua 环境搭建与代码调试 By Scarb Scarb’s Blog 最近开始学Cocos2d-x lua,Cocos2d-x lua 环境搭建坑好多,搭了好久。以此博客来记录一下。 Cocos2d-x lua 3x VS集成Babelua 环境搭

Cocos2d-x lua 3.x VS集成Babelua 环境搭建与代码调试

  • By Scarb
  • Scarb’s Blog
  • 最近开始学Cocos2d-x lua,Cocos2d-x lua 环境搭建坑好多,搭了好久。以此博客来记录一下。

  • Cocos2d-x lua 3x VS集成Babelua 环境搭建与代码调试
    • 创建Cocos2d-x lua项目
    • 配置Visual Stuio BabeLua环境
    • 注意事项坑
      • 1 运行时没有调试框
      • 2 无法定义全局变量
      • 3 print函数无输出
      • 4 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下载地址

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$", "w", stderr);  
#endif 

最后效果图:

3.2 无法定义全局变量

不知道从那个版本开始,Cocos2d-x lua 对全局变量的声明做出限制,不允许定义全局变量。如果声明全局变量,那么调试时会出错,并且提示你建议这样写:
cc.exports.varName = XXX
解决方法:
config.lua中将CC_DISABLE_GLOBAL = true 设为false即可。

3.3 print()函数无输出

这也是个坑,lua中print无法显示到调试框中。
解决方法:
在项目里的AppDelegate.cppapplicationDidFinishLaunching里面
加入 engine->executeString("print=release_print");
或者直接在lua代码里面用release_print()

3.4 lua 包引用

在Cocos2d-x lua 3.2 的代码,包引用需要
require "Cocos2d"
require "Cocos2dConstants"
之类,在某个版本之后只需要一条
require "cocos.init"

4. 参考资料

  1. cocos2dx 3.x lua环境配置与代码调试 - 不当码农的程序猿
  2. Windows下新建Cocos2d-x V3.10项目(cocos2d-x lua) - 博客频道 - CSDN.NET
网友评论