前置——Rider安装
在Rider中安装Lua断点功能
参考文献:
Unity中如何使用Rider调试C#和lua代码_rider unity_xiaofengxuan892的博客-CSDN博客
1.在Rider中File->Setting->Plugins
安装EmmyLua插件
2.安装插件完毕后,在右上角点击Edit Configuration…选项
点击左上角的加号选项,添加新的调试方式。
添加Emmy Debugger(NEW)
3.选择完毕后会回到之前的面板,我们来调试里面的配置
其他的基本不需要改动,只有Connection这里需要慎重选择。
两者分别代表了Rider充当服务器和Unity充当服务器:
1.Tcp(IDE connect debugger):Unity充当服务器,先启动Unity,等待Rider连接后调试
2.Tcp (Debugger connect IDE):Rider充当服务器,Rider先启动调试模式,等待Unity启动后连接
看得出来,这两者的使用方式不同,不过都可以进行Lua断点调试。
这里博主使用IDE connect debugger。
因此下文会讲解IDE connect debugger的使用,如果想知道另一种连接方法的使用,可以去看上文的参考文献。
4.敲定好Lua入口文件(通常我们会有一个Lua主文件负责管理所有的其他Lua文件的require,这就是入口文件)
将第3步页面上的代码负责下来,黏贴到最开头,并且需要加上最后一句话,否则会无法进行断点!!!
代码
package.cpath = package.cpath .. ';C:/Users/zhanghengwei/AppData/Roaming/JetBrains/Rider2022.2/plugins/TarantoolEmmyLua/debugger/emmy/windows/x64/?.dll'
local dbg = require('emmy_core')
dbg.tcpListen('localhost', 9966)
--需要我们自己加上的代码
-- 这句话非常重要,否则无法确定Rider连接状态
-- 使用这句话后,开启Untiy的时候,Untiy会直接卡住
--只有rider进行debug了,才会继续运行。
dbg.waitIDE()
此时,Lua安装功能便安装完毕了。
在Rider中使用Lua断点功能
1.和C#的断点类似,先选择你要断点的地方,进行断点
2.在Rider左上角选择LuaDebugger->启动Unity->开启调试
注意,和C#断点不同,得先启动Unity才Debug。
3.调试成功
一些问题
1.不得不承认,Rider的Lua断点用起来是有点不太完善的。
比如,dbg.waitIDE() 这句话会导致Unity在执行的时候卡住(其实更类似假死,你连面板都没法按了),只有rider进行debug才能继续运行——这其实类似C#断点的先启动再自动跳转到代码,只不过Lua断点没有自动跳转,会导致一些萌新还以为Unity卡住了。
这也导致了,如果你不使用Lua断点的时候,记得注释掉dbg.waitIDE() ,要断点的时候才取消注释,这样编程体验才会更好——这确实有点繁琐
2.如果使用VsCode的人会发现rider似乎没有办法直接在不同的脚本中找出补充用法,实际上是可以的。
只需要在左边的目录栏对lua代码根目录右键-tools-start index。即可进行方法索引