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()

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

相关推荐
Robot_Nav5 小时前
AI 编程助手 Skill 完全指南:VS Code · Trae CN · Claude Code
人工智能·vscode·skill·trae·claude code
Avalon7125 小时前
Unity3D响应式渲染UI框架UniVue
游戏·ui·unity·c#·游戏引擎
风酥糖7 小时前
Godot游戏练习01-第33节-新增会爆炸的敌人
游戏·游戏引擎·godot
ellis19707 小时前
Unity UI性能优化一之插件【Unity UI Optimization Tool】
unity·性能优化
生而为虫8 小时前
在VScode中使用Claude Code agent并配置模型(仅mac电脑实际操作,windows电脑未实际操作如有问题可留言)
windows·vscode·macos
Zik----10 小时前
Unity基础学习笔记(B站视频课整理)
unity·vr
郑寿昌19 小时前
UE5与UE6在Lumen和Nanite的差异解析
游戏引擎·图形渲染·着色器
郝学胜-神的一滴1 天前
罗德里格斯旋转公式(Rodrigues‘ Rotation Formula)完整推导
c++·unity·godot·图形渲染·three.js·unreal
郑寿昌1 天前
UE6 AI加速Lumen光线追踪降噪技术解析
人工智能·游戏引擎
晴夏。1 天前
GAS下的网络同步的全面分析【超级全面】
游戏引擎·ue·gas·网络同步