解决VSCode无法显示Unity代码提示的真正解决办法


防盗镇楼 本文地址: https://blog.csdn.net/cbaili/article/details/110157060

前言

作为一个程序猿最头大的问题大概就是重装系统了…但偏偏时间久了项目一多,Python,Java,DotNet,AndroidSDK,Qt等等一系列环境版本配置的乱七八糟,导致出各种无头绪的报错…崩溃!

这里记录个我是如何在重装系统后正确解决VSCode代码提示问题的。

不提示原因

其实在网上搜罗了一圈以后,发现无非也就是几种情况会导致没有代码提示:

  1. 没有使用VSCode打开工程目录
  2. 没有指定正确的sln工程配置文件
  3. 系统中没有安装对应的.NET开发者版本(大多数人遇到的问题)
  4. Package Manager的VScode插件版本不对
  5. Unity新版插件Visual Studio Editor版本与VSCode不匹配(2023/12/15更新)
  6. .NET x64 x86版本问题(20240430补充)
  7. 终极大招 以上都不好用的话试试重置项目目录

这个问题似乎纠结了许多网友,给出的解决方式要么看命要么根本不对症。在此整理一下终极解决方式以及我探索出的实际解决方法。

尝试解决问题

步骤1:验证是否正确打开工程目录

使用vscode 写unity文件无法自动提示代码)
如果你只打开的单独的cs文件而工程目录没有正确的跟进去,VSCode是找不到Unity的Library文件夹的。
在这里插入图片描述
你可以查看VSCode左侧的资源管理器,查看列表当中是否有sln文件。如果有继续往下看。
如果没有,打开Unity菜单Edit->Preferences->Extermal Tools中 点击Regenerate project files
在这里插入图片描述

步骤2:验证工程是否指定正确

VSCode无法进行Unity C#智能提示,代码补全以及方法跳转等功能的解决方案!
在这里插入图片描述
按下键盘的Ctrl/Command + Shift+ P快捷键,选定工程目录下的sln文件。
至此,如果你以前是有代码提示的,稍等几秒等待自动加载完成以后你可以重试一下是否有代码提示功能。

步骤3:检查和安装对应的.NET开发者版本(此操作在2022版本以上不再适用)

!!! 注意 Unity2020(LTS)+版本以后请参阅 后面的2023/12/15更新补充
!!! 下方安装.Net v4.7.1的方式适合Unity2019以下的老版本修复
!!! 如果你的工程目录里没有Assembly-CSharp也不要急,可能新版本导致的,同样参阅后面的2023/12/15更新补充

  1. 用VSCode打开你工程目录下的.csproj文件。
  2. 找到Project->PropertyGroup->TargetFrameworkVersion这条数据,如下图:在这里插入图片描述
  3. 记住你的版本号,到这下载对应版本号的开发者版 .NET Framework 。
    https://docs.microsoft.com/zh-cn/dotnet/framework/deployment/deployment-guide-for-developers
    这里我看到有的帖子说要改这个版本号,其实不然。如果你改了下次你创建新工程的时候还需要如此操作,且这种方法不见得就能够生效。在这里插入图片描述
  4. 以我的为例,我的是4.7.1,那么就戳这个连接进去,跳到下载页面。
    在这里插入图片描述
  5. 注意你需要下载Developer版本的,如果是Runtime版本很可能安装的时候会提示你已经安装了当前或更高版本的.NET从而拒绝你安装。当然稳妥方式都装一遍…
  6. 装完以后,重开VSCode。你期待的代码提示就会出现了!
**------华丽的分割线------**
2022/07/01更新补充:

最近忍不住升级了Win11,打开VSCode发现右下角弹窗报错找不到.Net SDK,
然而我使用老套路安装了.Net 4.7.1以后还是找不到.
于是鬼使神差的装了.NET6.0,重启以后便好了.
同时也感谢评论区的Kevinjing110分享了解决方法.
.
使用方法:

  • 安装前你可以先在cmd里面敲where dotnet来确认是否已经安装了.net
  • 如果回显出路径则表示已经安装,如果提示找不到则需要安装.Net6.0
  • 你可以戳这个.Net 6.0下载链接,随后等待几秒钟自动开始下载.
  • 下载完毕后双击安装
  • 重启系统(一些系统需要重启系统变量才会生效)

2023/12/15更新补充

最近又搞起了Unity,然而不出意外系统又重装了,发现VSCode的.NET相关插件发生了不小的变化
这次的Unity版本用的是2021.3.23f1c1,打开项目依旧出现问题

  1. 解决Unity双击脚本打开的VSCode没有打开工程目录
  • 查看Unity菜单Edit->Preferences->Extermal ToolsExternal Script Editor是否为Visual Studio Code
    在这里插入图片描述
    此故障是因为Visual Studio Editor包没有安装或版本不对导致的
    (尤其是当你点击了Reset argument以后命令行参数依旧是$(File)的情况时,检查这一项)
    在这里插入图片描述
  • 如果不是,点击一下,找找有没有Visual Studio Code[...]这个选项
  • 情况1:没有 且你的版本低于2019,请选择 Browse...手动指定你的VSCode应用程序
    – 随后在下一行会出现Extermal Script Editor Args这个选项,用于配置VSCode启动命令行
    –它的默认参数应该是"$(ProjectPath)" -g "$(File)":$(Line):$(Column)
    – 如果不对点击下面的[Reset argument][Regenerate project files]按钮重置命令行和工程依赖文件,随后重开Unity
  • 情况2:如果没有 且你的版本高于2019,请在Package Manager中,搜索vis 找到Visual Studio Editor这个插件,看看是不是最新的 不是就升级
    在这里插入图片描述
    – 这个插件升级后,External Script Editor应该就会出现Visual Studio Code[…]这个选项了
    – 升级后这个选项有些变化,你会发现让你配置命令行Extermal Script Editor Args这个选项消失了

随后在VSCode中安装新版Unity插件
在VSCode插件库中搜索安装Unity这个拓展,同时它会自动安装C#C# Dev Kit这两个拓展依赖
在这里插入图片描述
C#C# Dev Kit依赖于.NET Install Tool拓展,它负责自动下载部署.NET依赖环境
VSCode打开以后,你可能会看到控制台输出弹出了正在下载.Net7.0.14的信息
在这里插入图片描述
然而这个地址来自于Github,国内大部分网络是访问不了的
别急 我们手动下载

  • 戳这个到官网(最新) https://aka.ms/dotnet-download
  • 戳这个到官网(7.0) https://dotnet.microsoft.com/zh-cn/download/dotnet/7.0
  • 注意需要安装SDK而非Runtime
    在这里插入图片描述> - 安装一路Next,随后关闭VSCode 然后在Unity中重新双击你的脚本文件
    理论上这时候应该就不会弹出下载了 emmm…注意!!只是是理论上.
    实际上这玩意不太灵光,因为你可能还要:
    安装完重启!安装完重启!安装完重启!重启系统啊!

20240430补充
我又双叒重装系统了,输出报错找不到.NET SDK,于是我去手动安装了一下。
在这里插入图片描述
这次装的.NET8.0.2 SDK,重启系统过后依旧报错。控制台敲dotnet --info报没有找到SDK。烦死了!
在这里插入图片描述
我很确信我已经安装过了SDK,还装了6.0和8.0两个版本。并且重启过了。
那么到底是什么鬼原因的呢,经过鬼使神差的瞎捣鼓发现在我的系统中有两个dotnet
在这里插入图片描述
cmd敲where dotnet,显示出两个地方有dotnet。当我把x86目录下的dotnet目录重命名为dotnet2以后,再敲dotnet --info…一切都顺畅了。。。
在这里插入图片描述
原因就是我们安装的是x64的SDK,系统里还存在x86的老版本,所以当我关闭VSCode重开以后,通畅了!!(测试我也安装了一下X86的SDK,结果VSCode提示不兼容,如果你需要x86的sdk的时候再重命名回来)
在这里插入图片描述
此时代码提示回来了,一切OK!
推测以后就跟着节奏安装最新的.NET应该就可以了。

就很闹挺!

2024/07/11更新补充
看到评论区qq_32192491提到了修复.Net即便装了但还是提示要下载的解决方案,实测好用!
参考链接: 【Unity 踩坑系列】配置VScode环境Downloading the.NET Runtime Failed to download.NET 7.0.9installation timed out
同时也感谢作者Jay-Code
注:上文中提到了的插件".NET Install Tool for Extension Authors"如今更名为了".Net Install Tool" .按照教程改它就行.

2023/10/19更新补充:

终极大招 重置项目目录

看到评论反馈 有的朋友按照上述操作后还是出现不提示 这里突然想到一个解决办法可以尝试

  1. 复制一份项目做备份 记住项目所使用的unity版本
  2. 删除掉assets目录以外的全部文件和文件夹
  3. 重新用unity打开这个工程

分析一下

有些不提示的原因是因为老unity工程用新版本unity打开导致的,目录内可能会存在版本不符合的缓存以及api文件,删除它们让unity重新构建可能会好
另外查看.csproj文件,是指向dll文件的路径是否存在以及正确
不对的话将他们删除或者手动修复试试

代码提示有了,但找不到UnityEngine.UI等类

这个问题很好解决,我这里用的是2019.3.11f1版本。原因是这个版本的UI库文件挪位置了,而Unity新推出的Unity Package Manager插件没跟上步伐导致的…官方的坑!

步骤1:点开Unity的 Package Manager,找到右Visual Studio Code Editor,选择1.2.0以后的版本,然后点击右下角的升级按钮。(注意如果你用的2019,插件不要用太新的版本.否则还是会出现.不出来的情况.)在这里插入图片描述
步骤2:保存并关闭Unity和VSCode,到工程目录下删除所有的*.sln和*.csproj文件。
步骤3:重新打开Unity和这个工程,刚被删除的这两个文件将会被重新创建,届时这个故障就解决了。
如果你不想重启unity和vscode参照这个帖子https://blog.csdn.net/weixin_45476117/article/details/108911678

gameobject什么的只能.出一个智能引用

这里还是Unity Package Manager的插件惹的祸,我这里用1.2.0可以但是升级到1.2.3就出现这个问题.建议降级到低版本尝试.
在这里插入图片描述

其他相关

利用控制台定位问题

如果你发现按照上面一波操作以后问题依旧没有解决,这时候就需要你自己寻找故障所在了。这里提供一个方法来帮助你快速准确的找到自己的故障点所在。

1.留意你的VSCode控制台输出面板,通常在这里会弹出启动调试信息。

  • 在右上角可以切换某个拓展的调试信息,主要检查.Net相关的即可.
  • 仔细阅读输出的报错信息,大部分错误都会有告诉你解决问题的方式。
    看不懂的话取去翻译一下根据步骤来,不要盲目相信神论,找到问题的根本才是解决BUG的真谛…
    由于我这里已经解决好了环境问题,所以没有提示出找不到Unity类等错误信息,左侧的大纲也能够正常显示出来了。
    如果你的输出控制台有一大堆报错也不用慌,其实找到关键问题就都迎刃而解了。
    在这里插入图片描述

推荐撸Unity用的VScode插件

这是VSCode官方推荐的几个社区插件,这里复制过来安利一下
引用地址: https://code.visualstudio.com/docs/other/unity

C#
这个几乎是必装的插件,用于支持C#的一些日常sao操作.

  • .NET Core的轻量级开发工具。
  • .强大的C#编辑支持,包括语法突出显示,IntelliSense,转到定义,查找所有引用等。
  • 对.NET Core(CoreCLR)的调试支持。注意:不支持Mono调试。桌面CLR调试的支持有限。
  • .在Windows,macOS和Linux上支持project.json和csproj项目。

Unity Code Snippets
神器一件,这个工具可以帮助你快速的撸出OnTriggerEnter() OnApplicationQuit() 等等的代码片段,几乎全覆盖,去官网看下在这里插入图片描述

感谢观看,好使了别忘一键三连哦~

  • 110
    点赞
  • 254
    收藏
    觉得还不错? 一键收藏
  • 43
    评论
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值