前置——Rider安装

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。即可进行方法索引

参考:解决Rider无法查找Unity工程中lua代码用法的问题 - 简书 (jianshu.com)