Viusal Studio Code调试Cocos Lua
windows平台下使用cocos 3.10新建Lua项目,使用Visual Studio Code(简称Vs Code)进行调试的话,其配置如下:
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。1. 安装luaide,在扩展里面搜索luaide
2. 设置,将项目中src目录放置到vscode中,选择LuaDebug, 这时就会出现launch.json文件
找到exePath字段,替换为你需要执行的.exe的路径,比如:
原: "exePath": "/Users/k0204/Desktop/quickv3/quickv3 Mac.app/Contents/MacOS/quickv3 Mac", 新: "exePath": "G:/GitHub/GameBox/Project/simulator/win32/Project.exe",
其它默认即可。
3. 断点调试配置
需要LuaDebug.lua,其官网下载:https://github.com/k0204/LuaIde
下载成功后,将../LuaIde/luadebug下的LuaDebug.lua文件放置到你的项目src目录下,然后在项目的main.lua中添加如下代码:
-- 此处的7003要与lauch.json中的port一致即可,其端口在本地没有什么要求 local breakInfoFun,xpcallFun = require("LuaDebug")("localhost", 7003) -- cocos3.x -- 1.断点定时器添加 cc.Director:getInstance():getScheduler():scheduleScriptFunc(breakInfoFun, 0.3, false) -- 2.程序异常监听 __G__TRACKBACK__ = function(errorMessage) xpcallFun(); print("----------------------------------------") local msg = debug.traceback(errorMessage, 3) print(msg) print("----------------------------------------") end local status, msg = xpcall(main, __G__TRACKBACK__ )
可参考:https://github.com/k0204/LuaIde/wiki
4. F5启动调试
启动代码后,会提示类似如下的错误:
[LUA ERROR] USE "cc.exports.print1" = value "INSTEAD OF SET GLOBAL VARIABLE" or
cc.exports.StartDebug ...
这是由于在代码的config.lua中,添加了对全局变量的判定:
-- disable create unexpected global variable CC_DISABLE_GLOBAL = true -- 设为false
在不熟悉LuaDebug.lua代码的情况下,不建议将未声明的全局变量或者方法修改为局部,否则很容易导致添加断点无效的问题,切记!
5. Simulator console窗口
运行项目后,倘若想显示Simulator consolue窗口的话,可修改:
// SimulatorWin.cpp // define 1 to open console ui and setup windows system menu, 0 to disable // 由0设置为1 #define SIMULATOR_WITH_CONSOLE_AND_MENU 1
6. 运行项目,图片资源没有显示
使用Vscode运行Lua项目后,即使是设定了setSearchPaths,但是在读取想对路径下的图片资源依然会存在获取不到的问题,原因在于:
// 使用Visual Studio运行项目,关于其写入路径的代码如下:(运行没有问题) int SimulatorWin::run() { // set environments SetCurrentDirectoryA(_project.getProjectDir().c_str()); // 设置默认资源的目录:../framewokrs/runtime-src/proj.win32 FileUtils::getInstance()->setDefaultResourceRootPath(_project.getProjectDir()); // 设置写入路径目录为:../framewokrs/runtime-src/proj.win32 FileUtils::getInstance()->setWritablePath(_project.getWritableRealPath().c_str()); }
-- 使用Vs Code运行src项目,执行的时候,获取其写入路径的代码为: local writePath = cc.FileUtils:getInstance():getWritablePath() -- 输出:..\src\ print(writePath) -- 即使是添加如下代码,又有什么用处呢? local searchPaths = { "res\csd", "res\Image\", } cc.FileUtils:getInstance():setSearchPaths(searchPaths)

更多精彩