Como usar o Rider para depurar código C# e lua no Unity

Muitas vezes é necessário depurar o código lua no trabalho. Antes, eu usava o VS para depurar o código C# e o Intellij Idea para depurar o código lua. Isso é bastante problemático, então verifiquei e posso usar o Rider diretamente para depurar C# e código lua uniformemente.

Instalação do piloto:

Download do Rider: Faça o download no site oficial do Rider , selecione a versão correspondente de acordo com suas necessidades, é recomendável usar o Rider2020.1.0, consulte o link

Use o Rider para depurar o código C#:

Abra o Unity e defina-o como Rider de preferência. Ao clicar duas vezes em um arquivo C#, ele será aberto automaticamente com o Rider:

Selecione "Anexar ao Unity Editor" na barra de menus do Rider
:

Perceber:

1. Geralmente, selecione "Anexar ao Unity Editor", não selecione "Anexar ao Unity Editor & Play". O último iniciará automaticamente o Unity após clicar no ícone de depuração - em alguns casos, não é necessário iniciar automaticamente o Unity para conveniência de depuração. A diferença entre os dois é apenas iniciar automaticamente o Unity durante a depuração, o que pode ser determinado de acordo com a situação específica

2. Ao quebrar o código C#, você precisa iniciar a depuração no Rider primeiro e, em seguida, executar o Unity.

Usar o código C# do ponto de interrupção do Rider é muito simples, porque você pode associar o Unity ao Rider após a instalação do Rider, e a depuração do código é muito simples

Use o Rider para depurar o código Lua:

1. Instale o plug-in EmmyLua para depuração lua:

Na barra de menus do Rider "Arquivo -> Configurações":

2. Configure o LuaDebugger:

Clique em "Editar configuração": 

 

Clique no "+" no canto superior esquerdo para adicionar o LuaDebugger
:

Defina o método Name e Connection do LuaDebugger:

3.LuaDebugger tem dois métodos de conexão

Método 1: Rider atua como um servidor - Tcp (Debugger connect IDE)

Rider primeiro inicia o modo de depuração, espera o Unity iniciar e então se conecta

1. De acordo com as configurações no LuaDebugger, você precisa colar "dbg.tcpConnect" no código lua:

2. Encontre o arquivo inicial onde o C# chama o código Lua, como "GameMain.lua", etc., e adicione na parte superior do código:

Ou você também pode colocar o "dbg.tcpConnect" copiado e outros códigos no script de lua independente "EmmyLuaDebgger.lua" e, em seguida, "Require EmmyLuaDebugger" em "GameMain.lua" também pode:

Por exemplo, crie um novo script "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)

Em GameMain.lua:

3. Inicie o modo de depuração do Rider:

Após selecionar "LuaDebugger", clique no botão "Debug" para iniciar a depuração:

Em seguida, execute o Unity, após a conexão automática ser bem-sucedida, o código lua do ponto de interrupção pode ser executado normalmente

Método 2: o Unity atua como um servidor - TCP (depurador de conexão IDE)

Inicie o Unity primeiro, espere o Rider se conectar e depois depure

1. Copie o código de conexão "dbg":

2. Crie um novo arquivo 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. Execute o script onde C# originalmente chama o código Lua:

Adicione a seguinte instrução em "GameManager.cs"
:

PS:

1. Neste modo, você precisa adicionar uma instrução "dbg.waitIDE()" no final de "dbg.tcpListen", caso contrário, ele será executado diretamente após iniciar o Unity e não haverá "aguardando o estágio de conexão do Rider ", por isso é impossível depurar o ponto de interrupção normalmente.

Depois que "dbg.waitIDE()" for executado, o Unity será travado diretamente. Neste momento, o Unity continuará a executar somente após a conexão do Rider ser bem-sucedida.

2. Depois de executar "dbg.waitIDE", o Unity ficará preso diretamente, aguardando a conexão do Rider. Neste ponto, você pode adicionar algumas explicações para lembrá-lo de iniciar a depuração do Rider, por exemplo, adicionar exibição "OnGUI" em "GameManager.cs" e adicionar métodos de implementação específicos posteriormente

3. Inicie o Unity e, em seguida, comece a depurar no lado do Rider para quebrar o código lua normalmente

Acho que você gosta

Origin blog.csdn.net/m0_47975736/article/details/124573215
Recomendado
Clasificación