windows平台下使用cocos 3.10新建Lua项目,使用Visual Studio Code(简称Vs Code)进行调试的话,其配置如下:
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
7. 注意:
新建的cocosLua项目,如果将项目目录下的src放置到Vs Code中,在运行的时候,尤其是需要加载res下的资源文件时,会导致加载失败,其原因在于:
-- 获取搜索路径 local searchpaths = cc.FileUtils:getInstance():getSearchPaths() print(searchpaths) -- 其搜搜路径根本就没有设定 ProjectDir/res 相关,且即使设定了搜索了路径也是无效的 -- 除非你将导入vscode下的src目录切换为simulator/win32/src目录,但是这样又会导致一个问题,就是你修改的代码与ProjectDir/src下会不同步
所有比较稳妥的方式是使用 cocos BabeLua