如何在 Visual Studio Code 中为 Unity 函数名称获取智能感知?

Posted

技术标签:

【中文标题】如何在 Visual Studio Code 中为 Unity 函数名称获取智能感知?【英文标题】:How to get intellisense in Visual Studio Code for Unity functions names? 【发布时间】:2019-02-10 20:28:00 【问题描述】:

我正在关注一个关于 Unity 的教程,我看到讲师在编写方法名称时具有智能感知功能。

但是我只有类和变量的智能感知,我的意思是像刚体这样的 Unity 类和我自己的变量。

我也读过: Autocompletion not working in Visual studio

How to enable intellisense in Visual Studio 2017 for Unity

【问题讨论】:

VS Code 不是 VS,VS 直接与 .net 框架相关联,因此可以提供整个框架的智能,代码独立于语言和框架,您需要找到合适的统一扩展(我没有将它用于统一,所以不能推荐一个)或者切换到 VS 社区,那么你将拥有完整的 VS 集成 这能回答你的问题吗? Unity Scripts edited in Visual studio don't provide autocomplete 【参考方案1】:

如果仍然无法启用 IntelliSense,请确保在 .sln 文件所在的目录中打开了 VS Code(我之前在 Assets 中打开过更深的目录)。

来源: https://code.visualstudio.com/docs/other/unity

【讨论】:

【参考方案2】:

对于在 Mac 上遇到相同问题的任何人,请尝试在您的 .vscode/settings.json 中设置此值(或在用户设置中而不是在工作区设置中) )

"omnisharp.useGlobalMono": "always"

【讨论】:

【参考方案3】:

Intellisense 是 .Net 环境的纯工作流程。因此,您需要在系统上安装 .Net 'Developer pack'(不是运行时),因为它会安装以下所有三个必要组件:

    .Net 框架 .Net 目标包 .net SDK

参考链接:https://dotnet.microsoft.com/download/visual-studio-sdks

它直接安装到系统管理员可访问的路径,因此无需设置。现在,您必须告诉 VS Code 使用哪个 .Net 版本(无论您安装了哪个)。 您的 Unity 项目将在根目录中有这两个文件:

    Assembly-CSharp.csproj Assembly-CSharp-Editor.csproj

在这两个文件中搜索行(可能是 16 行):

<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>

编辑您刚刚安装的版本(我有 4.8)。然后重新打开 VS Code。现在一切正常。

【讨论】:

【参考方案4】:

我找到了另一个解决方案,因为其他解决方案都不适合我,我正在寻找几个小时。(2021 年 7 月 8 日):

我觉得我找到了适合很多人的解决方案,因为我最近重新安装了 Windows,并且简单地下载了启动所需的所有内容,没有其他问题。

我在使用 .NET、.NET Core 或 .NET Framework 时遇到了同样的错误,以下是一些错误截图:

在错误输出中,它说要安装此框架版本的开发包。您可以在 .csproj 文件中找到版本:

通过在dotnet microsoft 站点上安装此版本的.NET Framework:.NET Framework download list 我在重新加载 VSCode 后修复了错误,并让我的 Intellisense 为 Unity 工作。

TLDR: 我的修复方法是安装 .NET Framework 4.7.1 版

【讨论】:

【参考方案5】:

按照以下步骤操作:

    进入您的 Unity 项目。 转到Edit。 转到Projects preferences。 转到External tools。 在“外部脚本编辑器”行中,您必须更改为“Visual Studio Cummunity 2019...”

那么它应该可以工作。

【讨论】:

这不是作者的问题。【参考方案6】:

对不起,我的英语不好,但我会告诉你什么对我有用。

我在 Visual Studio Code 中打开 C# 脚本并查找 Assembly-CSharp.csproj 文件,然后,在第 16 行,我更改了以下内容:

<TargetFrameworkVersion> v4.5 </TargetFrameworkVersion>

为:

<TargetFrameworkVersion> v4.5.1 </TargetFrameworkVersion>

这解决了 Intellisense 问题。

【讨论】:

【参考方案7】:

在 Unity 中对我来说,Edit/Preferences/External Script Editor,并将其更改为 My_Install_Location\Microsoft VS Code\Code.exe(可能点击重新生成项目文件)

【讨论】:

【参考方案8】:

我真的很想为所有尝试使用 Visual Studio Code 获得智能感知的人澄清一下。

首先,我是为 Unity 2019.4.14 编写的,因为它是最新版本。

这些是您必须执行的操作:

    您需要 Visual Studio Code (duh) .NET Framework Dev Pac(不仅是 .NET core,甚至不是 .NET core SDK,而是 Framework Dev Pack,否则 VSCode 会抛出此错误:

未找到 .NETFramework,Version=v4.7.1 的参考程序集。要解决此问题,请为此框架版本安装开发包(SDK/Targeting Pack)或重新定位您的应用程序。

    通过在 VSCode 终端中键入 dotnet 来检查您是否安装了 .NET。 在 VSCode 中搜索“C# for Visual Studio Code”扩展并安装它 在 Unity 中,转到包管理器并安装 Visual Studio 代码编辑器。这将使 Unity 能够为 VSCode 生成正确的项目文件。 在 Unity 中,转到 Edit -> Preferences -> External Tools 并从下拉列表中选择 VSCode(可以列为 code.cmd),然后在选择后勾选 Generate .csproj files for 部分中所需的所有复选框。我检查了嵌入式包、本地包和来自未知来源的包。点击“重新生成项目文件” 从 Unity 打开任何 C# 文件,您应该一切顺利。

现在,Unity 代码片段和用于 Unity 扩展的调试器怎么样?好吧,这些都是有用的辅助扩展,但它们与 Intellisense 无关。第一个用于快速键入常见的 Unity 模式,第二个用于在您键入时显示 Unity Debug 警告和错误,而不是保存并返回 Unity 并读取控制台。

希望这对您有所帮助。

【讨论】:

我们需要 .net 框架吗?据我所知,Unity 使用的是 Mono。 如果您不想像我一样浪费时间,请注意开发包版本:4.7.1 VSC 扩展中似乎没有任何 .Net Framework Dev Pack、.Net Developer Pack 或任何类似的东西。有一个.Net Core Extension Pack,但你说不是。有一个 Unity 开发包。你是这个意思吗? @nwp 开发包不是 VSC 扩展,它本身就是一个库。这里microsoft.com/en-us/download/details.aspx?id=56119 @Terence 这就是安装 VSCode for Unity 指南中所说的内容code.visualstudio.com/docs/other/unity【参考方案9】:

虽然问题是 2 年前的问题,但问题偶尔会弹出,就像发生在我身上一样。

我自己也遇到了这个问题,所以这可能是第一个应该检查的问题。

“安装 .NET Framework 4.6 目标包”

为什么?

首先,我使用的是 dotnet core,而不是标准,所以我的计算机上没有安装标准库。当我开始尝试使用 Unity 和 VS Code 时,这是我没有意识到的缺失部分。

当我遇到这个问题时,我在网上搜索了一段时间,看到了这个问题。我又花了一段时间注意到VS Code and Unity 页面的“启用代码完成”部分中的这个框架语句。所以我尝试了,现在我很高兴我尝试了。

别忘了你至少需要重新启动 VS Code 才能让智能感知正常工作。

PS:框架版本可能而且很可能会根据我们所处的年份以及我们使用的版本而改变。因此,如果“4.6”不起作用,那么您可能需要另一个版本。

PS2:如果您要查找的是 Mac,请按照上面的相同链接并找到我上面提到的相同部分以获取 .NET SDK 的链接。

【讨论】:

【参考方案10】:

注意:我的解决方案没有解决函数名称的智能感知问题,但这是在 VSCode 中更普遍地修复智能感知的第一个问题。

我需要在 unity 中更新 VSCode 包。

在 Unity 中,单击 Window,然后单击 Package Manager,然后查找 Visual Studio Code Editor。按三角形展开它,然后升级到最新版本(对我来说,它是1.2.0。我重新启动了 VSCode 并且它工作了。

v1.1.4 有一个 bug 导致了这个问题,大约 3 个月没有修复。它仍然是新默认项目安装的默认包,因此您必须在每个新项目中将此包版本更改为 1.2.0,直到他们更新它。

【讨论】:

+1 这对我来说是个问题;我从 1.2.0 更新到 1.2.1,这为我解决了 Intellisense 问题。【参考方案11】:

老问题,但我最近也遇到了同样的问题。

您的 Assembly-CSharp.csprojproject-name.sln 文件中一定存在问题。最有可能是 .csproj 文件。如果您看一下,您会看到对 .dll 文件的各种引用。

您可以通过启用编辑 > 首选项 > 生成所有 .csproj 文件来告诉 Unity(我的版本:v2019.2.20f1)为您创建这些文件。

 1. Delete both files.
 2. Enable .csproj file generation.
 3. Double click on a script in Unity.

这解决了我的问题。

【讨论】:

您好,我无法理解此解决方案。删除这两个文件意味着什么? 对不起,晦涩难懂。 Assembly-CSharp.csproj 和 project-name.sln. 这为我解决了问题。谢谢你。从 2019.4 版本开始,重新生成的路径是 Edit&gt;Preferences&gt;ExternalTools&gt;Regenerate project files 我通过选择 Visual Studio 的外部脚本编辑器(在编辑 > 首选项 > 外部工具中)解决了这个问题。选项是“按文件扩展名打开”,该选项并未创建 .csproj 文件。 在较新的统一编辑器(至少 2020 版)中,我必须将 Edit-&gt;Preferences-&gt;External Tools-&gt;External Script EditorOpen By Script Extension 更改为 Visual Studio Code。这使用更多复选框更新了首选项窗口。我没有选中它们(默认)。然后我点击了Regenerate project files按钮,【参考方案12】:

虽然 Alex Myers 的回答很有帮助,但它并非 100% 正确。 Unity Snippets 确实为您提供了一些 sn-ps,以及预先输入的错觉,它实际上并不是智能感知。

要获得真正的智能感知,您需要:

在您的系统上安装 dotnet (https://code.visualstudio.com/docs/languages/dotnet) 并且, 安装 VSCode 的 dotnet 扩展 (https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp)

更多信息可以在这里找到:https://code.visualstudio.com/docs/languages/dotnet

您可以通过在 VSCode 的终端中输入 dotnet 来测试您是否安装了 dotnet。

注意在下图中,我如何获得完整的方法签名、引用计数和黄色提示球。这些仅在使用 dotnet + 扩展时可用(使用 sn-ps 时不可用)

【讨论】:

只需安装 C# 扩展对我有帮助,+1 对我来说,我安装了 C# 扩展,但 .net 版本不正确(我有几个随 Visual Studio 安装的旧版本)。还要检查控制台以确保所有版本都已正确安装。【参考方案13】:

查看Unity Development with VS Code 的指南。他们推荐了一些扩展:

Unity Snippets Debugger for Unity Unity Tools

我相信 Unity Snippets 扩展是您正在寻找的。​​p>

【讨论】:

以上是关于如何在 Visual Studio Code 中为 Unity 函数名称获取智能感知?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio Code 中为 Unity 函数名称获取智能感知?

如何在 Visual Code Studio 中为 pug lang 选择选项卡大小?

如何使用 anaconda3 在 Visual Studio Code 中为 python 启用智能感知?

如何在 Visual Studio Code 中为 Flutter 添加 iOS 模拟器?

如何在 WSL 的 Visual Studio Code 中为 PHP 开发设置我的 PHP 可执行路径?

Visual Studio 2017 中用于 JavaScript 和 TypeScript 文件的 Visual Studio Code 颜色主题