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

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

相关推荐
WarPigs1 天前
Unity无法修改Assembly-CSharp.csproj错误
unity
哎写bug的程序员1 天前
关于VSCode上gcc,gdb的安装配置问题
ide·vscode·编辑器
旺旺的碎冰冰~1 天前
VScode解决终端输出中文乱码问题
ide·vscode·编辑器
jason.zeng@15022071 天前
使用vscode+flutter开发android程序(入门)
android·vscode·flutter
FairGuard手游加固2 天前
手游加固怎么做?SO、IL2CPP、AssetBundle 与运行时保护详解
安全·游戏·unity
golang学习记2 天前
最新版VS Code开发Spring Boot项目保姆级教程
java·spring boot·vscode·后端
阿松爱学习3 天前
【Unity开发】监听Scene场景事件
unity·c#
2501_915918413 天前
在 Xcode 中运行和调试单元测试的完整指南
ide·vscode·macos·ios·单元测试·个人开发·xcode
面壁的熊猫3 天前
工作和学习中的高效工具
vscode
xiaogai_gai3 天前
BOM 物料清单同步实战:金蝶云星空 → 四化智造 MES 修改场景深度拆解
unity·游戏引擎