Unity中如何使用Rider调试C#和lua代码

这篇具有很好参考价值的文章主要介绍了Unity中如何使用Rider调试C#和lua代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工作中经常需要调试lua代码,之前使用VS调试C#代码,使用Intellij Idea来调试lua代码,这样其实比较麻烦,所以查了一下,可以直接使用Rider来统一的调试C#和lua代码

Rider安装:

Rider下载:Rider官网下载,根据需要选择对应的版本,建议使用Rider2020.1.0,参考链接

使用Rider调试C#代码:

打开Unity,在preference中设置为Rider,当双击C#文件时则会自动使用Rider打开:

Unity中如何使用Rider调试C#和lua代码

在Rider菜单栏中选择“Attach to Unity Editor”:
Unity中如何使用Rider调试C#和lua代码

注意:

1.一般选择“Attach to Unity Editor”,不要选择“Attach to Unity Editor & Play”。后者在点击调试图标后会自动启动Unity —— 有些情况为了方便调试并不需要自动启动Unity。两者区别仅仅在于是否调试时自动启动Unity,可以根据具体情况而定

2.在断点C#代码时需要先启动Rider中的调试,然后运行Unity。

使用Rider断点C#代码很简单,因为在安装Rider后可以将Unity和Rider关联起来,代码调试很简单

使用Rider调试Lua代码:

1.安装EmmyLua插件用于lua调试:

在Rider菜单栏“File -> Settings”:

Unity中如何使用Rider调试C#和lua代码

2.配置LuaDebugger:

点击“Edit Configuration”: 

 Unity中如何使用Rider调试C#和lua代码

点击左上角“+”添加LuaDebugger:
Unity中如何使用Rider调试C#和lua代码

设置LuaDebugger的Name以及Connection方式:

Unity中如何使用Rider调试C#和lua代码

3.LuaDebugger有两种Conection方式

方式一:Rider充当服务器 —— Tcp (Debugger connect IDE)

Rider先启动调试模式,等待Unity启动后连接

1.根据LuaDebugger中的设置,需要将“dbg.tcpConnect”粘贴入lua代码中:

Unity中如何使用Rider调试C#和lua代码

2.找到C#调用Lua代码最初始的文件,如“GameMain.lua”等,在代码顶部添加:

Unity中如何使用Rider调试C#和lua代码

或者也可以将以上拷贝的“dbg.tcpConnect”等代码放进独立的lua脚本"EmmyLuaDebgger.lua"中,然后在“GameMain.lua”中“Require EmmyLuaDebugger”也可以:

如新建“EmmyLuaDebugger.lua”脚本:

-- TCP (Debugger connect IDE)
package.cpath = package.cpath .. ';C:/Users/Frank/AppData/Roaming/JetBrains/Rider2021.3/plugins/EmmyLua/debugger/emmy/windows/x64/?.dll'
local dbg = require('emmy_core')
dbg.tcpConnect('localhost', 9966)

在GameMain.lua中:

Unity中如何使用Rider调试C#和lua代码

3.启动Rider调试模式:

Unity中如何使用Rider调试C#和lua代码

选择“LuaDebugger”后,点击“Debug”按钮开启调试:

Unity中如何使用Rider调试C#和lua代码

然后运行Unity,自动连接成功后即可正常进行断点lua代码

方式二:Unity充当服务器 —— Tcp(IDE connect debugger)

先启动Unity,等待Rider连接后调试

1.复制“dbg”连接代码:

Unity中如何使用Rider调试C#和lua代码

2.新建EmmyLuaDebugger.lua文件:

--[[-- TCP (Debugger connect IDE)
package.cpath = package.cpath .. ';C:/Users/Frank/AppData/Roaming/JetBrains/Rider2021.3/plugins/EmmyLua/debugger/emmy/windows/x64/?.dll'
local dbg = require('emmy_core')
dbg.tcpConnect('localhost', 9966)]]

-- TCP (IDE connect debugger)
package.cpath = package.cpath .. ';C:/Users/Frank/AppData/Roaming/JetBrains/Rider2021.3/plugins/EmmyLua/debugger/emmy/windows/x64/?.dll'
local dbg = require('emmy_core')
dbg.tcpListen('localhost', 9966)
dbg.waitIDE()                       -- 这句话非常重要,否则无法确定Rider连接状态

 3.在C#最初调用Lua代码的地方执行该脚本:

在“GameManager.cs”中添加如下语句:
Unity中如何使用Rider调试C#和lua代码

PS:

1.该模式下需要在"dbg.tcpListen"末尾添加“dbg.waitIDE()”语句,否则启动Unity后会直接运行,并不会出现“等待Rider连接的阶段”,这样是无法正常断点调试的。

“dbg.waitIDE()”执行后,Unity会直接卡住,此时只有在Rider连接成功后Unity才会继续执行

2.由于执行“dbg.waitIDE”后Unity会直接卡住,等待Rider连接。此时可以添加一些解释说明以提醒启动Rider调试,例如在“GameManager.cs”中添加“OnGUI”显示,这个后面再添加具体实现方式

3.启动Unity,然后在Rider端启动调试即可正常断点lua代码文章来源地址https://www.toymoban.com/news/detail-412091.html

到了这里,关于Unity中如何使用Rider调试C#和lua代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习笔记】Rider调试unity【 联调、断点调试等】(决定弃用vscode了)

    转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/130518705 小伙伴应该都尝试过vscode的unity调试插件了吧 插件不再维护不说,压根用不了,网上一堆抱怨,各种方法层出不穷,尝试了很多方法,正如这位网友所说的那样 插件官方也在github做出了回应 简单来说开发者

    2024年02月09日
    浏览(31)
  • 【Lua in Unity】详解与和C#互相调用示例

    目录 Lua在Unity中的主要作用 如何创建 Lua与C#互相调用 C#和Lua的使用场景区分 完整示例 游戏逻辑编写:Lua可以作为一种脚本语言,用于游戏中的逻辑编写,例如定义游戏角色的行为、AI逻辑,处理游戏的战斗逻辑和流程控制,等等。可以将Lua代码通过Unity的API来实现与引擎的交

    2024年02月11日
    浏览(48)
  • Unity如何使用手机进行调试(真机)

    首先打开手机的“USB调试”开关。 这里以华为手机举例,手机的系统是EMUI10,具体操作如下: 首先打开手机 进入“设置”> 找到“关于手机”> 连续点击“版本号”,出现提示进入开发者模式后停止。这样我们就进入了开发者模式。 然后进入“系统和更新” 选择“开发人

    2024年02月10日
    浏览(31)
  • Rider 中C#单元测试

    使用NUnit.Framework这个包,没有的话可以用nuget去搜索下载。简单的进行单元测试,想要单元测试好像还给需要static函数,慢慢学学C#

    2024年02月19日
    浏览(26)
  • C# 中的单元测试,如何使用单元测试进行程序测试和调试?

    单元测试是一种软件测试方法,用于测试单个功能或方法是否按预期工作。在 C# 中,可以使用 .NET 框架中的单元测试工具来编写和运行单元测试。 下面是使用 Visual Studio 内置的单元测试框架来创建一个简单的单元测试的步骤: 在 Visual Studio 中创建一个新的类库项目。 在新项

    2024年02月15日
    浏览(54)
  • 如何在Jetbrain Rider中使用EntityFrameWork (Core) 命令行,如添加迁移和更新数据库

    在Visual Studio中,EntityFrameWork命令如Add-Migration和Update-Database通常在包管理器控制台中运行。这在Visual Studio中工作得很好,但不幸的是,它不是可移植的。这些命令是基于powershell的,并且包管理器控制台绑定了Visual studio,因此在Jetbrain Rider中没法使用Add-Migration和Update-Database。

    2024年02月05日
    浏览(97)
  • Unity技术手册-Rider提高效率必备设置

    点击跳转=Unity3D特效百例 点击跳转=案例项目实战源码 点击跳转=游戏脚本-辅助自动化 点击跳转=Android控件全解手册 点击跳转=Scratch编程案例 点击跳转=软考全系列 专注于 Android/Unity 和各种游戏开发技巧,以及 各种资源分享 (网站、工具、素材、源码、游戏等) 有什么需要欢

    2024年02月10日
    浏览(33)
  • 工作中,我们经常用到哪些SQL语句呢?

    目录 一、DDL部分(create、drop、alter) 1.1 create 语句上 1.2 drop 语句 1.3 alter 语句 二、DML(数据操纵语言)和DQL(数据查询语言) 2.1 insert 语句 2.2 update 语句 2.3 delete 语句 2.4 select 语句 2.5 其他操纵语言 2.5.1 truncate 语句 2.5.2 merge 语句 三、用户角色权限 3.1 用户相关 3.1.1 创建用户

    2024年02月03日
    浏览(37)
  • Unity中使用Xlua调用lua相关

    这样只能读取Resources文件夹下的脚本,但是我们做热更新需要从AB包中读取,所以需要自定义加载路径 require寻找文件的逻辑是,先找AddLoader中自定义的路径(可以有多个路径)中有没有相应文件,再去Resources下查找

    2024年02月08日
    浏览(46)
  • Unity3D 如何把全部游戏逻辑都放到lua层实现详解

    Unity3D是一款非常流行的游戏开发引擎,它支持C#、JavaScript和Boo等脚本语言。然而,有时候我们可能希望将全部游戏逻辑都放到Lua层实现,这样可以更方便地进行游戏逻辑的修改和调试。本文将详细介绍如何使用Unity3D将全部游戏逻辑都放到Lua层实现。 对啦!这里有个游戏开发

    2024年01月16日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包