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

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

相关推荐
zhangphil43 分钟前
Unity3D(Unity)跨平台游戏引擎简介
unity
Madokaly1 小时前
DOTween动画:TweenManager深度解析
unity
golang学习记4 小时前
VS Code 2026年的正确的打开方式
vscode
_ZHOURUI_H_21 小时前
Unity TCP底层极限拆解:粘包、半包、CRC、序列号、双缓冲到底怎么一起工作的?
网络·网络协议·tcp/ip·游戏·unity·游戏引擎·游戏开发
KindSuper_liu1 天前
Unity 游戏网络基础:从 TCP、UDP 到 HTTP、TLS 与 Best HTTP
网络·游戏·unity
qq_170264751 天前
unity里GameObject和Texture的内存归属
java·unity·游戏引擎
BIBI20491 天前
Windows 下 Maven 安装与 VSCode 配置
java·windows·vscode·maven·环境搭建·安装教程
weixin_404679311 天前
godot + vscode ai开发
ide·vscode·编辑器·游戏引擎·godot
我一定会有钱1 天前
vscode system下载安装
ide·vscode·编辑器
2401_858286112 天前
VSCODE远程链接错误: 无法建立链接,过程试图写入的管道不存在的解决方法
ide·vscode·编辑器