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");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/500580.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何在 Mac 上打开、编辑、复制、移动或删除存储在 Windows NTFS 格式 USB 驱动器上的文件 Tuxera NTFS for Mac使用教程

当您获得一台新 Mac 时,它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac,您需要一个附加的 NTFS 驱动程序。Tuxera 他可以帮忙实现这一功能! Tuxera可以轻松转换驱动器:无论使用Windows PC还是Mac&…

什么是PMP,对工作的作用大不大?

PMP最早是由PMI发起,已成为全球公认的项目管理专业资格认证之一,PMP认证在全球190多个国家和地区获得最广泛的专业认可。 随着PMP的认可度不断提高,持有PMP证书的项目经理在求职过程中更有优势,不少公司对项目经理是否持证上岗也制…

2.java openCV4.x 入门-hello OpenCV

专栏简介 💒个人主页 📰专栏目录 点击上方查看更多内容 📖心灵鸡汤📖我们唯一拥有的就是今天,唯一能把握的也是今天 🧭文章导航🧭 ⬆️ 1.环境搭建 ⬇️ 3.Mat之构造函数与数据类型 hell…

三步提升IEDA下载速度——修改IDEA中镜像地址

找到IDEA的本地安装地址 D:\tool\IntelliJ IDEA 2022.2.4\plugins\maven\lib\maven3\conf 搜索阿里云maven仓库 复制https://developer.aliyun.com/mvn/guide中红框部分代码 这里也是一样的&#xff1a; <mirror><id>aliyunmaven</id><mirrorOf>*&…

期货开户要找到适合自己的系统

物有一个生物圈&#xff0c;大鱼吃小鱼&#xff0c;小鱼吃虾。在期货市场这条生物圈里面&#xff0c;大部分人就是期货市场的虾子&#xff0c;是被吃的&#xff0c;所以必须成长起来&#xff0c;往更高一层走&#xff0c;到可以吃虾子的时候&#xff0c;就是挣钱的时候。学习不…

TCP/IP 网络模型有哪几层?(计算机网络)

应用层 为用户提供应用功能 传输层 负责为应用层提供网络支持 使用TCP和UDP 当传输层的数据包大小超过 MSS&#xff08;TCP 最大报文段长度&#xff09; &#xff0c;就要将数据包分块&#xff0c;这样即使中途有一个分块丢失或损坏了&#xff0c;只需要重新发送这一个分块…

【解決|三方工具】Obi Rope 编辑器运行即崩溃问题

开发平台&#xff1a;Unity 2021.3.7 三方工具&#xff1a;Unity资产工具 - Obi Rope   问题背景 使用Unity三方开发工具 - Obi Rope 模拟绳索效果。配置后运行 Unity 出现报错并崩溃。通过崩溃日志反馈得到如下图所示 这是一个序列化问题造成的崩溃&#xff0c;指向性为 Obi…

深度学习pytorch——卷积神经网络(持续更新)

计算机如何解析图片&#xff1f; 在计算机的眼中&#xff0c;一张灰度图片&#xff0c;就是许多个数字组成的二维矩阵&#xff0c;每个数字就是此点的像素值&#xff08;图-1&#xff09;。在存储时&#xff0c;像素值通常位于[0, 255]区间&#xff0c;在深度学习中&#xff0…

蓝桥OJ3514 子串简写 (暴力+二分)

子串简写 一.暴力 思路: 只能通过60%。 从字符串开头遍历&#xff0c;如果遇到c1就进入子遍历&#xff0c;遇到长度大于等于k且以c2结尾的子串就使cnt;遍历完之后再从外遍历找c1。 这种方法的弊端在于&#xff1a;外遍历 #include<bits/stdc.h> using namespace std; con…

网络安全新视角:数据可视化的力量

在当今数字化时代&#xff0c;网络安全已成为各大企业乃至国家安全的重要组成部分。随着网络攻击的日益复杂和隐蔽&#xff0c;传统的网络安全防护措施已难以满足需求&#xff0c;急需新型的解决方案以增强网络防护能力。数据可视化技术&#xff0c;作为一种将复杂数据转换为图…

备考ICA----Istio实验13---使用 Istio Ingress 暴露应用

备考ICA----Istio实验13—使用Istio Ingress TLS暴露应用 1. 环境部署 清理之前实验遗留,并重新部署httpbin服务进行测试 # 清理之前的环境 kubectl delete vs httpbin kubectl delete gw mygateway # 部署httpbin kubectl apply -f istio/samples/httpbin/httpbin.yaml 确认…

Android RecyclerView 滑动后选中的条目居中显示

话不多说先看效果: 实录效果视频如下 滚动居中 RecyclerView 在原有的RecyclerView 基础上操作&#xff0c;其他步骤不变&#xff0c;只是替换一下 manager 步骤 导入依赖 maven { url https://www.jitpack.io }//无限滚动implementation com.github.ZhaoChanghu:GalleryLayou…

爬虫(Web Crawler)逆向技术探索

实战案例分析 为了更好地理解爬虫逆向的实际应用&#xff0c;我们以一个具体的案例进行分析。 案例背景 假设我们需要从某电商网站上获取商品价格信息&#xff0c;但该网站采取了反爬虫措施&#xff0c;包括动态Token和用户行为分析等。 分析与挑战 动态Token&#xff1a;…

github拉取的项目添加至自己的仓库

想把GitHub的开源项目拉到本地进行二开&#xff0c;研究了一下上传到gitee的步骤&#xff1a; 步骤 gitee新建仓库&#xff0c;仓库名与本地文件夹的名称一致&#xff0c;建好后gitee的页面也会有显示git命令 打开项目目录&#xff0c;右键打开git bash&#xff08;或者在git…

数据增强项目 | 用于目标检测的训练数据增强

项目应用场景 面向增强目标检测训练数据集&#xff0c;采用 Horizontal Flipping、Scaling、Translation、Rotation、Shearing、Resizing 等方法进行数据集的增强和丰富&#xff0c;能够提高目标检测算法的鲁棒性 项目效果&#xff1a; 项目细节 > 具体参见项目 README.md …

图论-二分图

一、二分图判定 1.1 二分图概念及应用 1.概念 二分图的顶点集可分割为两个互不相交的子集&#xff0c;图中每条边依附的两个顶点都分属于这两个子集&#xff0c;且两个子集内的顶点不相邻。 给你一幅「图」&#xff0c;请你用两种颜色将图中的所有顶点着色&#xff0c;且使得…

Linux多进程开发1 - 进程概述

一、并行和并发 并行 & 并发&#xff1a;有一个例子可以清晰地解释这二位的区别。如果将处理器(CPU)比作咖啡机&#xff0c;指令比作排队买咖啡的客人&#xff0c;则&#xff1a; 并发是两个队列交替使用同一台咖啡机&#xff1b;并行是两个队列同时使用两台咖啡机 二、进…

vue 窗口内容滚动到底部

onMounted(() > {scrollToBottom() }) // 滚动到底部方法 const scrollToBottom () > {// 获取聊天窗口容器let chatRoom: any document.querySelector(".chat-content");// 滚动到容器底部chatRoom.scrollTop chatRoom.scrollHeight; } 效果 聊天窗口代码…

深入理解数据结构第一弹——二叉树(1)——堆

前言&#xff1a; 在前面我们已经学习了数据结构的基础操作&#xff1a;顺序表和链表及其相关内容&#xff0c;今天我们来学一点有些难度的知识——数据结构中的二叉树&#xff0c;今天我们先来学习二叉树中堆的知识&#xff0c;这部分内容还是非常有意思的&#xff0c;下面我们…

常见的Nginx+Redis+MQ+DB架构设计

三高&#xff0c;复杂的架构 SQRS CAP 缓存&#xff0c;限流 【Redis&#xff0c;缓存】 cache-aside 缓存cache&#xff1a;数据源的副本 store 1. Read/Write Through Pattern 读写穿透模式 redis&#xff1a;放当前在线用户&#xff0c;热点数据