当前位置: 首页 > news >正文

vscode调试Unity

文章目录

  • vscode调试Unity
    • C#
      • 环境需求
      • 开始调试
    • Lua
      • 添加Debugger
      • 环境配置
        • 联系.txt文件
        • 配置Java环境
      • 添加调试代码
      • 断点不生效的问题

vscode调试Unity

C#

现在使用vscode调试Unity的C#代码很简单,直接在vscode的EXTENSIONS里面搜索“Unity”,第一个就是,然后安装它,它会自动帮你安装上C#C# Dev Kit扩展,这两个扩展的作用是代码导航和编译。

在这里插入图片描述

环境需求

  • Unity 2019 LTS或更高的版本
  • 需要在vscode中激活C# Dev Kit扩展,安装后就是激活的
  • .NET 7 SDK或更高的版本,C# Dev Kit会自动帮你安装
  • Unity的Visual Studio Editor包需要2.0.20或更高版本

Visual Studio Code Editor是舍弃的包,不用管。如果Visual Studio Editor的版本小于2.0.20,可以先解锁再升级到最新的版本,下图是解锁过。

在这里插入图片描述

.Net Core SDK的版本检测,打开cmd,输入dotnet --list-sdks就可以查看本机上安装的sdk的版本。

在这里插入图片描述

开始调试

Unity扩展添加了两个命令到vscode的命令面板(Ctrl+Shift+P打开)

  • Attach Unity Debugger:这个命令会显示可以附加到Unity debugger的Unity Editor和Player在这里插入图片描述

  • Unity API Reference: 这个命令会打开你选中的代码的Unity文档。

注意:如果你第一次运行,没有使用Attach Unity Debugger命令选择Unity Editor和Player,直接在Run And Debug那里点击开始,会弹出出dotnot is not yet acquired,无法成功附加,原因应该是你没有选择附加的Unity对象。执行Attach Unity Debugger选择Unity Editor和Player之后就正常了。

在这里插入图片描述

Lua

Lua的调试是使用的EmmyLua扩展。为了方便Lua的编写,以及添加断点,需要安装Lua扩展。

添加Debugger

打开.vscode/launch.json文件,右下角有一个Add Configuration...按钮,点击,在弹出的列表中查找,可以看到EmmyLua New DebugEmmyLua: Attach by process idEmmyLua: Attach by launch program三个选项,这里我选的是EmmyLua New Debug

在这里插入图片描述

可以看到emmylua支持的文件扩展名也有.lua.txtideConnectDebugger默认是true,这里我将它改成了false。如果是true的话,需要先运行Unity,再在vscode开始调试;false则相反。ideConnectDebugger从字面意思理解就是ide连接到debugger,ide是vscode,debugger是Unity。再结合上面的hostport字段,可以猜出emmylua和unity的连接是使用网络协议连接的,所以ide和debugger必定一个为服务单,一个为客户端。

添加debugger之后,我们可以在调试那里变成了两个选项:

在这里插入图片描述

Attach to Unity是用来调试C#的;EmmyLua New Debug是用来调试Lua的;你想调试哪个就使用哪个Debugger,不能同时调试C#和Lua。

环境配置

联系.txt文件

由于Unity不支持.lua文件,所以lua脚本一般使用.txt文件。但是vscode的lua又无法识别.txt文件,所以必须将lua和.txt文件联系起来。又为了和其他.txt文件区分,文件后缀可以改成.lua.txt。上面的launch.json里面EmmyLua也支持.lua.txt的文件后缀。打开.vscode/settings.json文件,在其中添加:

"files.associations": {"*lua.txt": "lua",},
配置Java环境

EmmyLua需要Java环境的支持,可以直接去java的官网下载安装。安装完后需要配置JAVA_HOME环境变量JAVA_HOME=XXX/Java/jre-1.8,再在Path里面添加一个路径$JAVA_HOME$/bin。但是我这样添加环境变量后,发现EmmyLua还是无法找到Java。后来发现EmmyLua的Settings里面有一个java.home的变量:

在这里插入图片描述

这里可以看到,emmylua.java.home的值为null,需要将它设置为我们上面的JAVA_HOME的值。再EmmyLua扩展的界面点击设置里面的Extension Settings

在这里插入图片描述

或者,打开命令面板(Ctrl+Shift+P),输出settings.json,选择Open User Settings

在这里插入图片描述

打开用户的设置文件(.vscode/settings.jsonWorkspace Settings),在里面设置emmylua.java.home的值

在这里插入图片描述

添加调试代码

上面已经说了,vscode和Unity一个客户端,一个服务端。如果ideConnectDebugger=true,那么是vscode连接到Unity,Unity是服务端,vscode是客户端;false则相反。所以,我们开始运行lua的时候,需要和vscode建立连接,建立连接的API在emmy_core.dll里面,路径是C:/Users/xxx/.vscode/extensions/tangzx.emmylua-0.5.19/debugger/emmy/windows/x64/emmy_core.dll。所以在lua的开始我们需要加入下面的代码

local path = "C:/Users/xxx/.vscode/extensions/tangzx.emmylua-0.5.19/debugger/emmy/windows/x64/emmy_core.dll"
package.cpath = package.cpath .. ";" .. path  #将emmy_core.dll的路径加入后,就可以使用require了
local dbg =require("emmy_core")
dbg.tcpConnect("localhost", 9966)             #因为是ideConnectDebugger=false,vscode是服务端,使用connect;反之使用tcpListen

然后就可以开始调试了。

断点不生效的问题

按照上面完成所有操作后,你会发现连接成功了,但是断点没有生效。然后你的代码很可能是这样的(我使用的是xlua)

var luaEnv = new LuaEnv();
luaEnv.DoString(textAsset.text);

这是因为你没有指定chunkName,emmylua不知道是哪个文件,所以断点没有生效。如果textAsset.textmain.lua.txt文件的内容,按照下面的修改断点就会生效了

var luaEnv = new LuaEnv();
luaEnv.DoString(textAsset.text, "main.lua.txt");
http://www.lryc.cn/news/328048.html

相关文章:

  • JavaScript是如何实现页面渲染的
  • 【YOLOv8 代码解读】数据增强代码梳理
  • 安卓调试桥ADB
  • 深入理解数据结构第一弹——二叉树(1)——堆
  • 面试题:JVM的垃圾回收
  • Java8之接口默认方法
  • 发挥ChatGPT潜力:高效撰写学术论文技巧
  • 国产暴雨AI服务器X3418开启多元自主可控新篇章
  • webpack-dev-server 如何直接用IP打开
  • Web框架开发-BBS项目预备知识
  • 力扣208---实现Trie(前缀树)
  • 书生·浦语大模型开源体系(一)论文精读笔记
  • 基于单片机模糊算法温度控制系统设计
  • GESP Python编程四级认证真题 2024年3月
  • Collection与数据结构 顺序表与ArrayList
  • pytorch | torchvision.transforms.CenterCrop
  • 在Debian 11上安装GCC
  • kafka部署之简单密钥
  • 大模型重塑电商,淘宝、百度、京东讲出新故事
  • 用静态工厂方法代替构造器
  • Discourse 最多允许有几个分类级别
  • MySQL数据库主从复制和读写分离
  • rust - 使用log4rs打印日志
  • 数据结构:单调栈和单调队列
  • 大模型RAG性能提升路径
  • 机器视觉学习(九)—— 边缘检测
  • 基于单片机声音分贝采集和显示控制系统设计
  • CentOS使用Docker部署Halo并结合内网穿透实现公网访问本地博客
  • 打造高效自动化渗透测试系统:关键步骤与实践
  • 绿联 部署vocechat,搭建私人聊天服务器,用于小型团队和家庭环境