VS Code里使用Debugger for Unity插件调试的方法(2023最新版)
作者:NickPansh 发布时间:2023-09-22 02:55:38
问题
换了台开发机,重新安装了下开发环境。突然发现Visual Studio Code无法用来调试Unity了。
明明流程都是按照Unity官方教程2023.1进行的,可在创建Launch.json文件时,死活出不来Unity Debugger选项。
说明:Debugger for Unity是一个非正式支持的,官方推荐的,应用最广的,Visual Studio Code上的Unity调试插件。如果还没有配置Unity Debugger可以直接看官方文档 | Debugger for Unity - Visual Studio Marketplace进行配置。本文视作在官方文档上的补充,解决按照官方文档操作却无法添加调试器的问题。
原本预期的步骤是:
结果出现的步骤是:
环境
Unity Version: 2021.3.16f1
VS Code Version: 1.74.2
Version of the Debugger for Unity: 3.0.2
Version of C#:v1.25.1(如果你的版本也是v1.21.13+,那你很可能是遇到和我一样的问题了)
问题定位
点开Visual Studio Code插件仓库,打开Debugger for Unity,看到这个插件上次更新已经是2020年的事情了,而且界面上明确写着:此扩展已启用,因为不在对其进行维护。
再点开插件的github地址,在Issues里遇到了一堆的受害者。
这个仓库弃用了吗?距离上次更新都十个月了,这个插件最新版的unity还能用吗?
不能发个官方的声明吗说明一下这个插件的情况吗?他都坏掉了……
现在都2022年底了,还是没看到官方通知。官方Unity文档里仍然说它被推荐。
团队的回答也很直接:
简单来说,我们很忙,没钱没人来维护这个项目。我们建议你换个IDE(不要用VS Code了),比如用Visual Studio Community。或者JetBrains Rider也行。
好吧,这个就是官方的态度,不要用了。
即使2023年他们仍把Visual Studio Code和这个插件放在最新文档里,但是正如文档里所说,这个Debugger for Unity拓展插件并没有被正式支持(Not Ffficially supported by Unity)。
说的还是太委婉了,直接点说:这个拓展插件我们不维护了,爱用不用。
甭管别的博客里有多推荐,不推荐了就是官方的态度。
解决方案
要么就听官方爸爸的,开发的时候用Visual Studio Code,调试的时候用Visual Studio得了……
要么我就想凑合用能不能行?
能!
如何在新的Visual Studio Code+Unity环境里使用Debugger for Unity进行调试
之所以你创建不了Unity Debugger,是因为C#插件在v1.21.13后,把标识符从ms-vscode改成了ms-dotnettools了,Unity Debugger又没有更新,所以找不到。
两个方案:
方案1.降级(不推荐)
找到c#插件,通过手动安装C# v1.21.12.vsix 或 自动降级的方式把C#版本回退到1.21.13以前
方案2.躲bug生成Launch.json(推荐)
说来说去,只是因为C#插件升级后,Debugger for Unity识别不到C#文件导致无法生成调试的配置文件罢了。那么我们不在C#文件中去生成不就好了?
No environment to choose · Issue #202 · Unity-Technologies/vscode-unity-debug (github.com)
随便创建一个txt文件,如:test.txt
点击这个text.txt文件后,进入调试页签,如图:
点击小齿轮就可以看到Unity Debugger啦,点击它后就生成了能用的Launch.json,如图:
方案3.手动配置Launch.json
先随便生成一个Launch.json(如果已经有了,跳过这一步)
再替换这个json的内容(或者手动合并json)
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Unity Editor",
"type": "unity",
"path": "/d:/workspace/unity/learn/CSharpLearn/Library/EditorInstance.json",
"request": "launch"
},
{
"name": "Windows Player",
"type": "unity",
"request": "launch"
},
{
"name": "OSX Player",
"type": "unity",
"request": "launch"
},
{
"name": "Linux Player",
"type": "unity",
"request": "launch"
},
{
"name": "iOS Player",
"type": "unity",
"request": "launch"
},
{
"name": "Android Player",
"type": "unity",
"request": "launch"
},
{
"name": "Xbox One Player",
"type": "unity",
"request": "launch"
},
{
"name": "PS4 Player",
"type": "unity",
"request": "launch"
},
{
"name": "SwitchPlayer",
"type": "unity",
"request": "launch"
}
]
}
大功告成,终于又可以用Visual Studio Code调试啦!
参考文章
No environment to choose · Issue #202 · Unity-Technologies/vscode-unity-debug (github.com)
Unity - 手动:集成开发环境 (IDE) 支持 (unity3d.com)
Debugger for Unity - Visual Studio Marketplace
来源:https://wenqu.blog.csdn.net/article/details/128580845
猜你喜欢
- 1、SpringSecurity 本质是一个过滤器链SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。现在对这
- 接触微信支付之前听说过这是一个坑,,,心里已经有了准备。。。我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是
- 一、继承1、继承的概念继承机制:是面向对象程序设计是代码可以复用的最重要手段,允许程序员在保持原有类特性的基础上进行扩展,增加新的功能,产生
- 这段C#代码主要是验证身份证的开头和身份证的格式和长度是否正确,没有按照身份证的编码规则进行严格验证/// <summary>
- 本文实例为大家分享了Android扫描和生成二维码的具体代码,供大家参考,具体内容如下MainActivity.javapublic cla
- mybatis实体类字段大小写问题 字段获取不到值由于前期设计问题,项目中需要用到的一个字段 rootpath,所以我再实体层加了这么一个字
- 项目常常需要有访问共享文件夹的需求,例如共享文件夹存储照片、文件等。那么如何使用Java读写Windows共享文件夹呢?Java可以使用JC
- 题目:使用struts2自定义 * ,完成用户登陆才能访问权限的实现在session中存放user变量表示用户登陆,若user为空则用户没有
- 本篇文章介绍SpringBoot的上传和下载功能。一、创建SpringBoot工程,添加依赖compile("org.spring
- webp格式图片webp格式图片是google推出的,相比jpg png有着巨大的优势,同样质量的图片webp格式的图片占用空间更小,在像电
- 1、普通用户与系统管理员用户的权限要有严格的区分。如果一个普通用户在使用查询语句中嵌入另一个Drop Table语句,那么是否允许
- 必须先要了解的1。c/c++是程序员自己管理内存,Java内存是由GC自动回收的。我虽然不是很熟悉C++,不过这个应该没有犯常识性错误吧。2
- 最大单词长度乘积给你一个字符串数组 words ,找出并返回 length(words[i]) * length(words[j]
- 阅读收获理解SpringBoot自动配置原理一、SpringBoot是什么SpringBoot 的诞生就是为了简化 Spring 中繁琐的
- public class PullToLoadListView extends ListView implements OnScrollLi
- 前言在上一篇文章中讲完了SpringMVC的大部分知识,此篇文章中主要讲解 * 。上一篇文章🚩 * 的使用是非常普遍的。例如在 OA系统中通
- 本文实例讲述了C#控制台进行文件读写的方法。分享给大家供大家参考。具体如下:C#控制台进行文件写入:using System;using S
- 在Eclipse中创建Android项目,利用之前学过的WebView控件和中国天气网提供的天气数据接口,实现获取指定城市的天气预报。布局文
- 示例接口定义为了方便笔者先自己写了个简单的接口用于展示,返回当前时间,具体如下/// <summary>/// GetToday
- Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接上代码/** * &n