Unity+Vscode+EmmyLua+XLua 调试实战

碎碎念

主播深受调试困难之苦,于是想着尝试一下如何调试Lua脚本,在神秘AI的发力下搞了半天终于走通了一次,记录一下本次过程,主播用的是VSCODE来写Unity,装的Xlua框架,使用EmmyLua调试器,EmmyLua的github地址如下
https://github.com/EmmyLua/VSCode-EmmyLua?utm_source=chatgpt.com

看着跟着文档走就差不多了其实

过程

1.给VScode安装EmmyLua拓展

在插件商店安装

在网址安装

https://marketplace.visualstudio.com/items?itemName=tangzx.emmylua

2.添加调试器配置 EmmyLua New Debug

打开调试器配置面板,点击小齿轮

进入launch.json文件,点击Add Configuration按钮添加配置

在跳出来的菜单里选择EmmyLua NewDebug 配置

3.给调试的lua脚本添加服务监听器代码

找到你要调试的lua脚本,把光标放在文件开头,使用快捷键ctrl+shift+P 打开顶上的快捷搜索栏,输入

复制代码
EmmyLua : Insert Emmy Debugger Code 

在下拉框中选择X64/X86 (如果报错就换一个,一个一个试试)

4.给lua脚本添加几个断点

我标了两个框框,由于一些原因,上面那个框框的断点是打不到的,只有下面这个框框能打到,稍后会解释这个原因。

5.使Unity进入播放模式

6.在VScode开启EmmyLua NewDebug 模式

在Debug面板选择EmmyLua NewDebug调试器,然后运行

7.回到Unity,如果执行到了断点脚本,就可以知道成功Debug了

总结

这个流程要Unity进入播放模式,VScode再开启调试模式,才能识别到断点,这导致比如初始化函数比如Lua侧的Awake,new这些打的断点是有可能无效的,这就是我在上文中提起的原因。这个流程相比于进行CS脚本调试那般,随时进入播放模式,随时进入VScode调试模式是不太方便的,有没有更好的办法?

后续

关于我上面提到的方法,在神秘AI的发力下也找到了,就是在那个代码片段后面加一个这个

lua 复制代码
dbg.waitIDE()

变成这样,就可以解决我上面的问题了,我真傻,真的

相关推荐
佑白雪乐11 小时前
C++标准总结+VSCode使用+MinGW
开发语言·c++·vscode
#空城12 小时前
VSCode搭建LVGL9的模拟器
ide·vscode·编辑器
CDialog1 天前
vscode编译ci1303sdk的源代码
ide·vscode·编辑器
Yasin Chen1 天前
Unity TMP_SDF 分析(二)数据来源2
unity·游戏引擎
Mao_Hui1 天前
Unity3d实时读取Modbus RTU数据
开发语言·嵌入式硬件·unity·c#
相信神话20211 天前
《酒魂》游戏开发实战——从设计思想到 Godot 实现(单机完整版)
游戏引擎·godot
1-1=01 天前
Visual Studio Code 简介
ide·vscode·编辑器
心疼你的一切1 天前
【Unity-MCP完全指南:从零开始构建AI游戏开发助手】
人工智能·unity·ai·游戏引擎·aigc·mcp
示申○言舌1 天前
基于知识库(RAG)系统打造由大模型(LLM)驱动NPC游戏的技术设想
游戏·unity·大模型·知识库·rag·智能npc·npc记忆
π同学1 天前
ESP-IDF+vscode开发ESP32第一讲——GPIO
vscode·esp32·esp-idf