在 Visual studio 中编辑的 Unity 脚本不提供自动完成功能

Unity Scripts edited in Visual studio don't provide autocomplete

当我想编辑 C# Unity 脚本时,它们会在 Visual Studio 中打开。它应该为所有与 Unity 相关的代码提供自动完成,但它不起作用。

在这里您可以看到缺少的功能:

如图所示,transform 对象不会打开自动完成菜单。

Unity version: 5.5.2f1
Visual studio 2015
Visual Studio Tools for Unity is installed

没有自动完成,因为脚本说的是“杂项文件”而不是项目名称。请看下面来自您问题中的视频的图片:

出现“杂项文件”消息的原因有很多:

  1. 当您从另一个文件夹打开 Unity C# 文件而不是从 Unity 编辑器打开它时,可能会发生这种情况。

  2. 这也可能发生,因为 Unity 在 Visual Studio 仍处于打开状态时崩溃,因此损坏了一些文件。

  3. 这可能是因为 Unity 关闭然后重新打开但不再连接到 Visual Studio。当 Visual Studio 打开时,您会得到“杂项文件”并且没有自动完成。

  4. 当未安装 Visual Studio 统一工具 时,可能会发生这种情况。

  5. 当您从 Unity 创建脚本时,然后在 Unity 完成处理之前或圆形图标动画材料完成动画之前快速打开它。


大多数时候,重启 Unity 和 Visual Studio 应该可以解决这个问题。

我不知道是哪一个导致了问题,但我会介绍最可能的解决方案来解决这个问题。

修复第 1 部分:

  1. this link 下载并安装 Visual Studio unity 工具。在 Unity 和 Visual Studio 都关闭时执行此操作。

  2. 从 Unity 编辑器,转到 编辑首选项... → 外部工具。在 外部脚本编辑器 下拉菜单中,将其更改为 Visual Studio 2015.


修复第 2 部分:

如果新创建的 C# 文件以 杂项 形式出现,请按照以下说明操作:

  1. 从 Visual Studio,转到 工具选项...Unity 工具杂项。在 显示连接图标 下,将其设置为 true 然后重新启动 Visual Studio。

  2. 当您重新启动时,连接图标现在应该在 Visual Studio 中可用。单击它然后选择要连接的 Unity 实例。红色 'x' 图标现在应该变成棕色复选标记图标。现在,当您在 Unity 中创建一个新的 C# 文件时,打开它时应该不会显示 Miscellaneous.


修复第 3 部分:

还是没修好?

重新导入项目然后打开 C# 项目。

  1. 关闭Visual Studio.

  2. 从 Unity,通过转到 AssetsReimport All.

    重新导入项目

  3. 现在,通过转到 AssetsOpen C# Project 打开 Visual Studio 中的项目。这将重新加载项目并修复可能的解决方案文件问题。


修复第 4 部分:

还是没修好?

分别修复每个 C# 文件。

  1. 单击 显示所有文件 图标。

  2. Select 不自动完成的脚本然后右键单击 select Include In Project.


修复第 5 部分:

还没修好?

此特定解决方案的功劳归功于 ,该解决方案似乎适用于多人。

  1. 关闭Visual Studio

  2. 转到您的项目目录并删除所有生成的 Visual Studio 文件。

    这些是要删除的文件扩展名:

    • .csproj
    • .user
    • .sln

    示例:

    假设您的项目名为 Target_Shoot,这些是要删除的文件应该如下所示:

    • Target_Shoot.csproj
    • Target_Shoot.Editor.csproj
    • Target_Shoot.Editor.csproj.user
    • Target_Shoot.Player.csproj
    • Target_Shoot.Player.csproj.user
    • Target_Shoot.sln

    不要删除任何其他内容。

  3. 再次双击 Unity 中的脚本,它会生成新的 Visual Studio 文件,然后打开 Visual Studio。这可能会解决您的问题。


修复第 6 部分:

如果不工作,请检查您是否有 错误:

The "GetReferenceNearestTargetFrameworkTask" task was not found

  1. here.

    安装 Nuget PackageManager
  2. 重启Visual Studio.

有关详细信息,请参阅 答案。


修复第 7 部分

确保所有项目都已加载。 在解决方案资源管理器中,它应该告诉您 # 个项目。 如果未显示所有项目,请右键单击“解决方案(# of # projects)”并单击“加载项目”。

我找到了另一种更方便地解决此问题的方法:

  1. Select 解决方案资源管理器中的损坏文件。
  2. 打开它的属性。
  3. 将“构建操作”字段从“编译”切换为“None”。
  4. 然后将其切换回“编译”。

这会以某种方式终止 Unity 和 Visual Studio 之间的同步。

下次Visual Studio重新加载项目时,会提示警告。 只需点击“放弃”即可。

卸载并重新加载项目,在 Visual Studio:

  • Solution Explorer
  • 中右键单击您的项目
  • select 卸载项目
  • select 重新加载项目

已修复!

我发现这个解决方案效果最好(最简单),运行 多次遇到这个问题。

来源:https://alexdunn.org/2017/04/26/xamarin-tips-fixing-the-highlighting-drop-in-your-xamarin-android-projects/

我通过 visual studio 本身而不是统一编辑器

创建 .cs 文件找到了我的解决方案
  • 在解决方案资源管理器中右键单击项目文件夹
  • 添加 > 新项目
  • 在右上角的搜索字段中输入 "unity"
  • select "CSharp MonoBehaviour"
  • 在底部为您的脚本命名,然后单击“添加”

我今天使用 Visual Studio 2017 15.4.5 和 Unity 2017 遇到了同样的问题。

我可以通过右键单击 Visual Studio 中的项目并将目标框架从 3.5 更改为 4.5 来解决问题。

希望这对遇到类似情况的其他人有所帮助。

两个备选方案:

修复 1

@singleton 向我指出了这个方向。不要在 Visual Studio 中更改目标,您应该在 Unity 中更改它,因为项目是自动生成的。

首先删除自动生成的Visual Studio文件: .csproj 。用户 .sln

然后从 Unity 进入 PlayerSettings 并在 'Other Settings' 下将 'Scripting Runtime Version' 从 Stable 3.5 更改为 Experimental 4.6。

但是,这并没有为我解决问题。

修复 2

我注意到所有对 Unity 相关代码的引用都标有黄色警告。检查您的错误日志,看看是否属于这种情况。特别是看看您是否收到以下错误:getreferenceNearestTargetframeworkTask

如果是这样尝试: 再次启动 Visual Studio 安装程序。

在 Build Tools 2017 上,单击修改,

确保勾选 "Nuget targets and build tasks"。如果您单击 Universal Windows Platform development,这应该会被勾选。

  1. Select 项目在 Visual Studio
  2. 单击 "Refresh" 按钮

就我而言,我的 PC 上没有安装正确的 .net 版本。我在我的电脑上安装了 .net 3.5,它对我有用。

对于 Windows 或 macOS:

Download/Install Visual Studio IDE (with Unity Tools)

安装时,确保包含

的安装

Game development with Unity

然后使用 Unity(您可以双击其中一个 C# 文件),打开一个新的 C# 项目,Visual Studio IDE 应该会打开您的新项目结构。

从那里,您应该能够看到您要查找的内容。

例如:

对于Linux(建议):

尝试Monodevelop - Additional Information,它提供代码completion/hints。

我解决了在 WIN 上安装与我的 Unity 项目中配置的相同版本的 .NET。 (播放器设置)

我的自动完成功能也不起作用,因为未安装 Visual Studio Unity 工具。因此,在安装之后,删除自动生成的 Visual Studio 文件。别人说你重新打开文件,问题就解决了,其实不是。

诀窍是:不是正常双击文件,而是需要通过右键单击从Unity打开C#文件,然后"Open C# Project"。

None 以上解决方案对我有用。但是我打开了 ProjectName.CSPROJ 文件并手动添加了新文件,它就像 charm

我遇到的问题是 C# 项目针对不同的 .NET Framework (4.7.2),而 Unity 项目有不同的目标 (.NET 3.5)。

我通过将 Unity 中的目标更改为 -

来解决此问题

File -> Build Settings -> Player Settings -> Other Settings -> API Compatibility Level : Set it to the .NET version you already have installed (Check your .NET Version here). In my case, it was 4.x

在此之后,Visual Studio 完美运行,自动更正也已修复。

  • 转到“工具”菜单上的“选项”,然后转到“环境”节点中的 select 文档。 (如果文档没有出现在列表中,select在“选项”对话框中显示所有设置。)
  • 在 "Miscellaneous files in Solution Explorer" 上打勾,然后单击“确定”。 (此选项会在解决方案资源管理器中显示 "Miscellaneous Files" 节点。杂项文件是与项目或解决方案无关但如果勾选此选项会显示在解决方案资源管理器中以方便您使用的文件。)
  • 在 "Miscellaneous Files" 下的解决方案资源管理器中找到您的文件。然后将您的文件拖放到它应该属于的地方,瞧!这会将文件复制到您放置它的位置。如果您愿意,现在可以安全地删除 Miscellaneous Files 文件夹下的旧文件

制作人员:


如果脚本文件夹不可见:

  • 在解决方案资源管理器中单击 "Show all files"
  • 找到脚本文件夹。
  • 右键单击脚本并 select "Include in Project"

对我有用的是我复制了损坏的 class 中的所有代码并删除了该文件。 然后,我打开一个同名的空文件并粘贴回来。

结果:漂亮的语法高亮回来了!

试试这个,

  1. 在 Unity 编辑器中转到菜单,单击编辑 -> 首选项 -> 外部工具 -> 外部脚本编辑器。将其设置为 Visual Studio(您安装的 VS 版本)。

  2. 现在在菜单栏中转到编辑 -> 项目设置 -> 播放器设置 -> 其他设置 -> 在配置下 -> 检查 API 兼容级别 -> 将其更改为你安装的。网络版。就我而言,我将其设置为 .Net 4.x

现在如果 Visual Studio 是 运行 已经转到 Visual Studio,它会要求重新加载项目。重新加载项目。检查它是否有效,如果没有关闭 Visual Studio。现在从 Unity 编辑器打开 cs 文件,现在它应该可以工作了。

尝试按 Ctrl + Alt + Space(在建议和标准完成模式之间切换)

请记住,如果您使用的是 ReSharper 工具,它将覆盖 IntelliSense 并显示它自己的。要更改它,在 VS 上,转到扩展 -> ReSharper -> 选项 -> IntelliSense -> 常规,然后选择 Visual Studio 而不是 ReSharper。

在重新启动and/or 重新安装 VS 之前,首先尝试打开任何其他项目以查看 Intellisence 是否有效,如果有效,则问题可能出在您当前的项目上。首先,最有可能的受害者是带有未决更新的 NUGET 包。要解决此问题,

  1. 右键单击引用
  2. 继续在 NUGET 包下管理 NUGET 包
  3. 继续更新安装更新并重新检查 Intellisence

我尝试了所有这些,但最终发现我需要在解决方案资源管理器中右键单击解决方案并添加现有项目,然后在 Window 的资源管理器中找到 C# 程序集文件。似乎有无数种不同的问题会导致您出现此错误,这可能是最简单的解决方案。如果您从 unity 中双击您的脚本,它似乎不会拖动程序集。

尝试组合:Ctrl + Alt + Space

以上方法之一对我有用,我刚刚找到了解决这个问题的方法,
1.首先进入工程目录,删除.sln个文件
2. 其次,转到 unity 并双击您的脚本。然后 Visual Studio 打开会报错,

  1. 然后单击确定并关闭 Visual Studio 编辑器。
  2. 最后,关闭你的Windows Defender,然后进入你的项目目录,就会有.csproj文件。只需双击并从您的 Visual Studio 编辑器中打开它,然后打开资产文件夹内的脚本文件夹,然后打开脚本,自动完成功能就可以正常工作了。

使用 Visual Studio Community 2019 和 Unity 2019.3 更新 2020:

  1. 以管理员身份打开 Visual Studio 安装程序,select 修改当前安装并添加“Game development for Unity”

  2. 如果你现在在Unity中添加一个新的c#脚本,并用Visual Studio(自动)打开它,它不会在[=26]的顶部描述为“杂项” =] 但使用“Assembly-CSharp”,自动完成工作。

如果您已完成上述所有操作但仍无法正常工作,请尝试以下操作: 注意:你应该已经更新了 VS。

转到 Unity > 编辑 > 首选项 > 外部工具 > 外部脚本编辑器。 不知何故,我没有为外部脚本编辑器选择 "visual studio" 并且它不起作用。一旦我选择了它并从 unity 中双击 c# 文件,它就开始工作了。

希望对你也有帮助

另一个可能的修复:

  1. 在项目 window 中,点击 Assets 文件夹
  2. 右键单击,然后创建 -> C# 脚本
  3. 双击它,然后等待。

出于某种原因,这项工作。

由于某些奇怪的原因,“使用 Unity 开发游戏”工具可能会在 Visual Studio 中被禁用。

要解决这个问题..

  1. 打开Visual Studio
  2. 转到扩展 →“管理扩展”→已安装
  3. 查找“Visual Studio 2019 Unity 工具”
  4. 如果禁用,启用它
  5. 重启VS

归功于 on

这个页面帮助我解决了这个问题。

Fix for Unity disconnected from Visual Studio

在 Unity 编辑器中,select 编辑 > 首选项菜单。

Select 左侧的“外部工具”选项卡。

对于外部脚本编辑器,选择您拥有的 Visual Studio 版本。

点击重新生成文件

你完成了

以下适合我。

转到编辑->首选项->外部工具->外部脚本编辑器Select Scripting Editor

嗯,也许您可​​以将我的指南视为一种可选方法。我在使用 Visual Studio 代码 1.26 的 Unity 2020 时遇到了这个问题 为了解决问题,我按照以下步骤操作:

  1. 安装 C# 插件 Visual Studio
  2. 从这个 https://www.monodevelop.com/download
  3. 安装 Mono
  4. 通过此命令 which mono 查看 Mac 中 Mono 的安装位置。例如,在我的 Mac 中,它是 /Library/Frameworks/Mono.framework/Versions/Current
  5. 回到C#插件,打开它的设置,在插件的setting.json中进行如下更改:
    "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current",
    "omnisharp.useGlobalMono": "always"

我们开始了....

如果您在 Microsoft Visual Studio 中使用 Resharper,您需要前往 “扩展 -> ReSharper -> 扩展管理器”并安装扩展“Unity 支持”。 像魔术一样工作!

来自UnityselectEdit选项,然后~>Preferences...~>External Tools,然后开启Built-In Packages。我尝试了所有解决方案,只有这个帮助了我,我偶然打开了它!

在 Unity 中,编辑>首选项>外部工具 单击重新生成项目文件。

你安装这个?

安装 Visual Studio 和 Unity 下载 Visual Studio 安装程序,如果已安装则打开它。 Select 为您想要的 Visual Studio 版本修改(如果已经安装)或安装(对于新安装)。 Select 工作负载选项卡,然后 select Game development with Unity 工作负载。 如果尚未安装 Unity,select 安装程序可选部分中的 Unity Hub 复选框。 Select修改或安装以完成安装。