写在正文之前

        这篇文章对于使用Visual Studio Code作为C#编辑器,进行Unity游戏开发的读者可能有帮助,本文的写作目的是解决VScode“不识别、不联想、不报错”的问题。

        写在正文前面:我是一名大一新生,从初中开始就接触了Unity游戏引擎,虽然我在高中开发了几款小游戏,甚至拿过一次区级奖项,但我深知在游戏开发以及编程的领域,我仍然是一名小白,懂得略比门外汉多一些而已。我能坚持下来纯粹因为脾气倔,撞破南墙的那种倔,编辑器里跳出的红色报错,能让我接连几天为之废寝忘食。

        那么这篇文章所针对的问题,是属于让我三次撞破墙的那种,从我的笔记本上得知,我早在21年就已经被这个问题上过不止一课,但都没能抓住问题关键所在。我读了很多相关的博客文,口径不一、过于底层和复杂、实测无效是主要的几个问题。

unity vscode 代码不能跳转 vscode写unity_unity vscode 代码不能跳转

        想必各位都明白这种写代码没联想、把时间浪费在算法之外的痛苦,因此,这篇文章——我在CSDN上的第一篇博客文,剑指这个困扰大家的现象,希望能真正解决这个问题。

安装.NET SDK

Microsoft官网下载链接


https://dotnet.microsoft.com/zh-cn/download/dotnet       

首先下载.NET SDK安装程序,这个SDK可能是和Windows平台的软件开发有关。

        注意:应当下载SDK而非Runtime(后者常被网页翻译成“运行时”),请注意自己电脑的平台以及型号,我是Windows,64位;

        版本选择最新版即可,保险起见,不要选择“预览版”“测试版”。

unity vscode 代码不能跳转 vscode写unity_c#_02

        读者若是已经安装了.NET SDK,仍然可以下载相应版本的安装程序,因为安装程序附带了修复功能,修复的结果之一就是自动添加至PATH(详见下文)

unity vscode 代码不能跳转 vscode写unity_Visual_03

修改系统环境变量

        这点是许多文章最为津津乐道的一点,“看上去很深奥,其实一点都不简单”,正确做法是不要去碰这种系统底层的东西,上述安装程序会在“安装”或者“修复”之后自动添加到PATH,如果不幸像我一样相信了网上那些高手炫技的做法,那么就必须顺着这条路走下去,按照下图找到“编辑环境变量”窗口,将自己添加的错误路径全部删除(不要碰系统自带的这一堆路径!)删除之后每个窗口都要点击“确定”,以此保存变更

        打开.NET SDK安装程序,点击修复(或者按照图4添加"C:\Program Files\dotnet\",注意末尾有反斜杠,且两边没有双引号,这招前提是读者没有修改过SDK的目录,还是建议用“修复”)。

unity vscode 代码不能跳转 vscode写unity_Visual_04

unity vscode 代码不能跳转 vscode写unity_c#_05

unity vscode 代码不能跳转 vscode写unity_unity vscode 代码不能跳转_06

unity vscode 代码不能跳转 vscode写unity_c#_07

验证安装

unity vscode 代码不能跳转 vscode写unity_c#_08

如上图,输入"dotnet","dotnet --list-sdks"(注意空格和减号),"where.exe dotnet",如果输出都与上图相似而非报错,则说明SDK已成功安装,上述步骤是没问题的。

dotnet
dotnet --list-sdks
where.exe dotnet

已经完成.NET SDK的配置后

        接下来是Unity以及VScode相关的设置,这也是其他文章很常见的解决方法——但是相比上文SDK的设置,SDK是地基,Unity和VScode只是软装修,地基出问题怎么装修都是徒劳。

        在Unity编辑器上方菜单Edit->Preferences->External Tools(编辑->首选项->外部工具)将外部工具下拉菜单设为VScode:

unity vscode 代码不能跳转 vscode写unity_unity_09

        如果VScode带有"(internal)"后缀就是错误的,即使在Project->Assets中双击打开脚本,也仅仅是把VScode作为C#文件的打开方式,而没有让Unity与VScode联动。遇到这种情况应当复盘上述步骤,SDK配置好了自然就成了。

        页面上没有复选框和"Regenerate project files"按钮也是同样道理。有些文章说要“全部勾选,点击Regenerate”,反正我是没这么做,还是那句话,不了解原理就不要碰底层的东西。

        在VScode扩展商店内下载"Unity"(认准Microsoft官方蓝标),本文写于2023年9月,此时两个Unity Debugger组件已经被弃用了,用了几年的组件说没就没,再惋惜也没用,安装它们的继任者“Unity”官方组件即可。其余C#等组件可能会一起被安装,我之前已经装好了所以不太确定有没有自动安装,Unity开发用到的组件这方面有很多博客文,不再赘述。

unity vscode 代码不能跳转 vscode写unity_unity_10

更新Visual Studio Editor包

unity vscode 代码不能跳转 vscode写unity_Visual_11

Unity编辑器上方菜单Window->Package Manager(窗口->包管理器),如图左上角选择Unity Registry(Unity注册表),找到Visual Studio Editor。

        Visual Studio 和 Visual Studio Code 根本是两个软件,一紫一蓝它能一样吗,还偏偏就统称为“Visual Studio”,不得不吐槽这个谜之操作的误导性。

        在右侧点击Unlock(不知道干嘛用的),在右下方找到最新版本并下载安装,弹窗提示有风险不用鸟他。

      小小的版本号,大大的差别,直到这一步版本升级完成,我才修复了代码没提示的Bug。

看一下最终成果:

unity vscode 代码不能跳转 vscode写unity_Visual_12

        有代码联想、鼠标悬停在命名空间或者基类MonoBehaviour上方能弹出提示、关键词显现不同颜色,问题已解决。 

unity vscode 代码不能跳转 vscode写unity_c#_13

        其他问题或者解决方法、勘误、宝贵意见,欢迎在评论区讨论,互相学习,成就彼此。