当前位置: 首页 >  在线学习 >  [Love] VSCODE 调试 LOVE 引擎游戏

[Love] VSCODE 调试 LOVE 引擎游戏

导读:VSCODE调试LOVE引擎游戏.安装插件.配置插件.按 CTRL + SHIFT + P,打开Preferences: Open User Settings.(JSON),为settings.json添加如下代码."Lua.runtime.version": "LuaJIT",

VSCODE调试LOVE引擎游戏

安装插件

配置插件

CTRL + SHIFT + P,打开Preferences: Open User Settings (JSON),为settings.json添加如下代码

  "Lua.runtime.version": "LuaJIT",
  "Lua.diagnostics.globals": [
    "love",
  ],
  "Lua.workspace.library": [
    "${3rd}/love2d/library"
  ],
  "Lua.workspace.checkThirdParty": false,

添加系统环境变量

配置启动文件

Run and Debug配置launch.json,该文件将出现在你工作目录下的 .vscode 文件夹

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "lua-local",
      "request": "launch",
      "name": "Debug",
      "program": {
        "command": "love"
      },
      "args": [
        ".",
        "debug"
      ],
    },
    {
      "type": "lua-local",
      "request": "launch",
      "name": "Release",
      "program": {
        "command": "love"
      },
      "args": [
        ".",
      ],
    },
  ]
}

添加至 main.lua最顶部

if arg[2] == "debug" then
    require("lldebugger").start()
end

添加至main.lua最底部(可选)

出错信息不会显示在游戏窗口画面上,而是直接定位到当前错误的行

local love_errorhandler = love.errhand

function love.errorhandler(msg)
    if lldebugger then
        error(msg, 2)
    else
        return love_errorhandler(msg)
    end
end

关闭外部控制台

修改conf.lua,关闭t.console,否则调试器会无法获取到信息而卡住

-- conf.lua
love.conf = function(t)
    -- t.console = true
end

启动调试

按F5启动游戏,你现在可以选择两种方式来启动

  • Debug 可以调试游戏(需要设置断点)
  • Release 直接运行游戏

如果出现提示 '"love"' �����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ��� 只需要重启VSCODE

关于调试器

tomblind/local-lua-debugger-vscode: Local Lua Debugger for VSCode (github.com)

⭐ 快速模板

if arg[2] == "debug" then
  require("lldebugger").start()
end

-- your code

local love_errorhandler = love.errhand

function love.errorhandler(msg)
    if lldebugger then
        error(msg, 2)
    else
        return love_errorhandler(msg)
    end
end




{
  "version": "0.2.0",
  "configurations": [

    {
      "type": "lua-local",
      "request": "launch",
      "name": "Debug",
      "program": {
        "command": "love"
      },
      "args": [
        ".",
        "debug"
      ],
    },
    {
      "type": "lua-local",
      "request": "launch",
      "name": "Release",
      "program": {
        "command": "love"
      },
      "args": [
        ".",
      ],
    },
  ]
}
内容
  • 一文揭秘DDD到底解决了什么问题
    一文揭秘DDD到底解决了什么问题
    2023-12-01
    DDD作为架构设计思想帮助微服务控制规模复杂度,那它是怎么做到的呢?.一、架构设计是为了解决系统复杂度.谈到架构,相信每
  • Unity实现3D物体遮挡血条
    Unity实现3D物体遮挡血条
    2023-12-08
    Unity 实现3D物体遮挡血条.######.前言:在游戏开发中,我们经常会遇到UI和3D物体的层级遮挡问题,最常见的
  • 一个公式让你35岁以后能越过越好!大神修炼心法
    一个公式让你35岁以后能越过越好
    2023-12-08
    前言.Cocos 的老铁,如果你这几天没有被麒麟子给卷到?那说明你还没有真正进入 Cocos 圈子里来。为什么这么说呢?
  • C++学习-static
    C++学习-static
    2023-12-02
    全局变量使用:.作用是限定全局变量的作用范围,只能在当前文件使用,类似给它加了个private属性。.其他文件即使使用e
  • 【Oculus Interaction SDK】(五)设置不同的抓握手势
    【Oculus Interact
    2023-12-10
    前言.前段时间 Oculus 的 SDK.频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现
  • 吃透单调栈(2)——解两道Hard题:接雨水、柱状图中最大的矩形问题
    吃透单调栈(2)——解两道Har
    2023-12-04
    怎么想到要用单调栈的?.这类题目的数据通常是一维数组,要寻找任一个元素的右边或者左边第一个 比自己大 或者小 的元素的位