如何在Visual Studio Code中获得Unity函数名称的智能提示?

56

2
VS Code不是VS,VS直接与.net框架相关联,因此可以从整个框架提供智能感知,Code是语言和框架无关的,你需要为Unity找到一个合适的扩展(我没有在Unity中使用过,所以无法推荐一个),或者切换到VS Community,然后你将拥有完整的VS集成。 - MikeT
这个回答解决了你的问题吗?在Visual Studio中编辑的Unity脚本没有提供自动完成 - amitklein
13个回答

40

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

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

你可以告诉 Unity(我的版本:v2019.2.20f1),通过启用 Edit > Preferences > Generate all .csproj files 选项来为你创建这些文件。

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

这解决了我的问题。


1
你好,我在理解这个解决方案时遇到了麻烦。删除两个文件是什么意思? - Ashik
抱歉有些晦涩。Assembly-CSharp.csproj和project-name.sln。 - Mehmet Fırat Koloğlu
11
这对我有用,谢谢。 从2019.4版本开始,重新生成路径为“编辑>首选项>外部工具>重新生成项目文件”。 - Jon Plotner
我通过选择外部脚本编辑器为Visual Studio(在“编辑>首选项>外部工具”中)解决了这个问题。选择是“按文件扩展名打开”,而这个选择不会创建.csproj文件。 - redcurry
Unity 2020.1.11f1(带有Visual Studio Code编辑器1.2.3)在Ubuntu 20.04上运行。在vs code上,我还需要更改C#扩展设置:“Omnisharp:Use Global Mono”为“always”,在安装最新的mono后在我的系统上。 - dvlcube
4
在较新的Unity编辑器(至少是2020版本),我需要在“编辑->首选项->外部工具->外部脚本编辑器”中将“通过脚本扩展打开”更改为“Visual Studio Code”。这会更新首选项窗口并增加更多复选框。我将它们全部保持未选中状态(默认)。然后我点击了“重新生成项目文件”按钮。 - xtreampb

29

我希望能为所有试图在Visual Studio Code上启用Intellisense的人们澄清一下问题。

首先,我是针对Unity 2019.4.14(编辑:也适用于2020.3和2021.3)编写这篇文章的。

要使此功能正常工作,您必须执行以下操作:

  1. 您需要Visual Studio Code(废话)
  2. 您需要.NET SDK。我认为版本不重要,最新的版本可能是最好的选择。请确保安装的是SDK而非运行时。
  3. 通过在VSCode终端中键入dotnet来检查是否已安装.NET SDK。
  4. 您还需要.NET Framework Dev Pack,否则VSCode将会抛出以下错误:

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

  1. 在VSCode中搜索“C# for Visual Studio Code”扩展并安装它
  2. 在Unity中打开“Package Manager”,并安装“Visual Studio Code Editor”。这将使Unity能够为VSCode生成适当的项目文件。(可能已经安装了)
  • 在Unity中,转到 编辑 -> 首选项 -> 外部工具,并从下拉列表中选择VSCode(可能列为code.cmd),然后在选择之后,在“生成.csproj文件”部分中选中您想要的所有复选框。我选择了嵌入式包、本地包和未知来源的包。单击“重新生成项目文件”
  • 打开Unity中的任何C#文件,您就可以开始使用了。(在重新生成项目文件后,您可能需要重新启动VSCode才能使其工作)
  • 那么,Unity代码段和Debugger for Unity扩展怎么办?这些都是有用的帮助扩展,但与Intellisense无关。第一个是为了快速输入常见的Unity模式,第二个是为了在您键入时显示Unity调试警告和错误,而无需保存并返回Unity并阅读控制台。

    希望这对您有所帮助。

    p.s. 再注意一点:Visual Studio Code依赖于我们通过Unity生成的解决方案文件才能使Intellisense工作。这很重要,因为您必须将整个项目文件夹添加到VSCode工作区中,而不仅仅是“Assets”文件夹或您的“Scripts”文件夹。如果您只向VSCode添加“Assets”文件夹,则它将不会意识到那些解决方案(.sln)文件,如果您通过Unity打开脚本,则它可能仍然可以正常工作。


    我们需要 .NET Framework 吗?就我所知,Unity 正在使用 Mono。 - Terence
    1
    如果你不想像我一样浪费时间,注意Dev Pack版本:4.7.1。 - Baboo
    VSC 扩展中似乎没有 .Net Framework Dev Pack、.Net Developer Pack 或类似的东西。有一个 .Net Core Extension Pack,但您说那不是它。有一个 Unity Dev Pack。这是您所指的吗? - nwp
    @nwp 开发包不是 VSC 扩展,而是一个独立的库。在这里可以下载: https://www.microsoft.com/zh-cn/download/details.aspx?id=56119 - Aleksandar Ruseski
    @Terence 这就是安装VSCode用于Unity的指南中所说的内容 https://code.visualstudio.com/docs/other/unity - Aleksandar Ruseski
    显示剩余2条评论

    12
    虽然Alex Myers的答案有所帮助,但并不完全正确。Unity Snippets确实为您提供了一些片段和智能提示,但它并不是真正的IntelliSense。
    要获得真正的IntelliSense,您需要: 更多信息可以在这里找到:https://code.visualstudio.com/docs/languages/dotnet 您可以通过在VSCode终端中键入dotnet来测试是否已安装dotnet。
    请注意,在下面的图像中,我如何获得完整的方法签名、引用计数和黄色提示球。只有在使用dotnet加扩展程序时才有这些功能(在使用代码片段时不可用)。 enter image description here

    2
    只需安装C#扩展程序就可以帮助我了,+1。 - DCON
    对我来说,我安装了C#扩展,但是.NET版本不正确(我安装了几个旧版本与Visual Studio一起安装)。还要检查控制台以确保所有版本都正确安装。 - GoldenArcher
    安装 VS Code 的 dotnet 对我很有帮助,感谢你的解决方案。希望其他人也会发现它有用。 - Nilesh Singh Dahiya

    8
    注意:我的解决方案不能解决智能感知到函数名称的问题,但这是修复VSCode中更一般的智能感知的第一个问题。
    我需要在Unity中更新VSCode包。在Unity中,点击“窗口”,然后点击“包管理器”,再查找“Visual Studio Code Editor”。点击三角形展开它,并升级到最新版本(对我来说是1.2.0)。我重启了VSCode,然后它就可以工作了。
    v1.1.4存在一个导致此问题的错误,大约三个月没有修复。它仍然是新默认项目安装的默认包,因此您必须在每个新项目中更改此包版本为1.2.0,直到他们更新它。

    Screenshot of package manager with V1.2.0


    2
    +1 这对我来说就是问题所在;我从1.2.0更新到了1.2.1,这解决了我的Intellisense问题。 - Chris Jang

    7

    5

    如果您在 Mac 上遇到同样的问题,请尝试在您的.vscode/settings.json中设置此值(或者在用户设置中而不是工作区设置中设置)

    "omnisharp.useGlobalMono": "always"


    只需记得以某种方式安装MonoDevelop。 - strider
    这对我在Pop_OS! 22.10上有效。我在VSCode设置中找到了名为OmniSharp: Use Modern Net的设置 - 我取消了勾选并重新启动了VSCode,这安装了一个mono版本的OmniSharp,现在可以正确加载所有项目引用(因此Intellisense正常工作)。 - Samuel Slade

    2

    抱歉,我的英语不太好,但我会向您展示对我有用的内容。

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

    <TargetFrameworkVersion> v4.5 </TargetFrameworkVersion>
    

    针对:

    <TargetFrameworkVersion> v4.5.1 </TargetFrameworkVersion>
    

    这解决了Intellisense的问题。


    2

    对于我来说,只需在Unity中打开编辑/首选项/外部脚本编辑器,并将其更改为My_Install_Location\Microsoft VS Code\Code.exe(可能需要点击重新生成项目文件)。


    2
    Intellisense是.Net环境中的纯工作流程。因此,您需要在系统上安装".Net开发人员包"(而不是运行时),因为它会安装下面三个必要组件:
    1. .Net框架
    2. .Net目标包
    3. .Net SDK
    参考链接:https://dotnet.microsoft.com/download/visual-studio-sdks 它直接安装到系统管理员可访问的路径,因此无需进行设置。现在,您必须告诉VS Code要使用哪个.Net版本(无论您安装了哪个版本)。 您的Unity项目将在根目录下有这两个文件:
    1. Assembly-CSharp.csproj
    2. Assembly-CSharp-Editor.csproj
    在这两个文件中搜索行(可能是第16行):
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
    

    编辑您刚安装的版本(我使用的是4.8)。然后重新打开VS Code。现在一切应该正常工作。


    1
    我找到了另一个解决方案,因为其他解决方案都对我无效,我搜索了几个小时。(07/08/2021):
    我有一种感觉,我找到了很多人的解决方案,因为最近我重新安装了Windows,并简单地下载了所有需要的东西,以便开始而没有其他问题。
    我遇到了与.NET、.NET Core或.NET Framework相同的错误,这里是一些错误的截图:

    Error popup

    Error output

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

    enter image description here

    通过在dotnet微软网站上安装此版本的.NET Framework:.NET Framework下载列表 我重新加载了VSCode,使我的Unity Intellisense工作正常,修复了错误。
    简而言之: 我的解决方法是安装.NET Framework 4.7.1版本。

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接