windows平台下使用cocos 3.10新建Lua项目,使用Visual Studio Code(简称Vs Code)进行调试的话,其配置如下:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

1. 安装luaide,在扩展里面搜索luaide

Viusal Studio Code调试Cocos Lua 随笔 第1张

2. 设置,将项目中src目录放置到vscode中,选择LuaDebug, 这时就会出现launch.json文件

Viusal Studio Code调试Cocos Lua 随笔 第2张

找到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)

 

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄