IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity中如何使用Rider调试C#和lua代码以及激活Rider? -> 正文阅读

[游戏开发]Unity中如何使用Rider调试C#和lua代码以及激活Rider?

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

Rider安装及激活license:

这里使用Rider2021.3操作:Rider2021.3,包含激活license-Unity3D文档类资源-CSDN下载

下载完成后解压,双击安装“JetBrains.Rider-2021.3”,一路默认安装完成。

激活license:

1.将解压后文件夹中的“fineagent.jar”拷贝到C盘根目录下

2.在“JetBrains.Rider”的安装目录下找到“rider64.exe.vmoptions”文件——通常路径为:C:\Program Files\JetBrains\JetBrains Rider 2021.3\bin —— 并使用notepad++或者记事本打开:

在“rider64.exe.vmoptions”文件末尾添加指令“-javaagent:c:/fineagent.jar”:

PS:不同平台使用的指令不同,具体可查看上述解压后的文件夹中“readme.txt”文件

3.打开Rider,此时需要输入license信息。

找到上述解压后的文件夹中“readme.txt”文件,拷贝Activation Code:

点击“Activate”即可激活Rider

使用Rider调试C#代码:

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

在Rider菜单栏中选择“Attach to Unity Editor”:

注意:

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”:

2.配置LuaDebugger:

点击“Edit Configuration”:?

?

点击左上角“+”添加LuaDebugger:

设置LuaDebugger的Name以及Connection方式:

3.LuaDebugger有两种Conection方式

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

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

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

2.找到C#调用Lua代码最初始的文件,如“GameMain.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中:

3.启动Rider调试模式:

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

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

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

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

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

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”中添加如下语句:

PS:

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

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

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

4.启动Unity,然后在Rider端启动调试即可正常断点lua代码

PS:

Rider使用中的一些细节:

1.断点调试各个按钮的作用:

按钮1代表从一个断点直接跳转到下一个断点处 —— Resume Program

按钮2代表单步调试,指沿着当前代码一行一行的逐步执行 —— Step Into

按钮3代表跳出当前的单步调试,回到上一级。主要针对于单步调试执行到当前方法的方法体内时,使用“Step Out”可以跳出当前方法体回到上一级 —— Step Out

2.快捷键:

shift + shift 查找指定文件??

“Ctrl + shift + F” 全局查找:

“Cc”:区分大小写,比如当搜索内容为“HandButtonBinding”时,只有当大小写完全为“HandButtonBinding”时才会满足。当不开启“Cc”时,那么“handbuttonbing”也会满足该搜索结果

"W":当搜索内容为“abc”时,如果点开“W”,那么只有当字符串为“abc”时才会被识别,“abcdef”不会被识别;如果不点开“W”,那么“abc”,“abcdef”都会被识别

?IDEA的快捷键总结:IDEA和Rider的快捷键有些是通用的【IDEA 教程系列第 2 篇】 idea 常用快捷键(每个都有操作演示)_Allen Su的博客-CSDN博客

3.当使用Rider或IDEA的过程中,当打开的文件数量较多时,有些脚本会自动被关闭掉,此时可以设置一共打开的脚本数量上限:

如上可以根据具体情况设置打开脚本的数量上限,如“30”

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-06 11:17:25  更:2022-05-06 11:17:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:20:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码