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

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

在这里你可以看到缺失的功能:

自动补全功能缺失的视频

如上所示,transform对象没有打开自动补全菜单。

统一版本:5.5.2f1
Visual studio 2015
Visual Studio Tools for Unity已安装

472213 次浏览

没有自动补全,因为脚本说“其他文件的"而不是项目的名称。看看下面这张图片,它来自你的问题中的视频:

enter image description here

其他文件的"消息的产生有很多原因:

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

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

  3. 这可能是因为Unity关闭后重新打开,但不再连接到Visual Studio。当Visual Studio打开时,你会得到“其他文件的"没有自动补全功能。

  4. Visual Studio工具的统一没有安装时,会发生这种情况。

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


大多数情况下,重启Unity和Visual Studio可以解决这个问题。

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

修复第一部分:

  1. 链接下载并安装Visual Studio工具的统一。在Unity和Visual Studio都关闭时这样做。

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

    enter image description here


修复第2部分:

如果新创建的c#文件显示为杂项,则遵循以下说明:

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

    enter image description here

  2. 当您重新启动时,连接图标现在应该在Visual Studio中可用。点击它,然后选择要连接的Unity实例。红色的“x”图标现在应该变成棕色的复选符号图标。现在,当你在Unity中创建一个新的c#文件时,它应该在没有杂项的情况下打开。

    enter image description here


修复第3部分:

还没修好?

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

  1. 关闭Visual Studio。

  2. 从Unity中,通过资产再输入所有重新导入项目。

    enter image description here

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

    enter image description here


修复第4部分:

还没修好?

单独修复每个c#文件。

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

    enter image description here

  2. 选择不自动完成的脚本,然后右键单击并选择纳入项目

    enter image description here


修复第5部分:

还没有解决?

这个特殊的解决方案似乎对很多人都有效,功劳归于< >强chrisvarnz < / >强

  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. 再次双击脚本从统一,它应该生成新的Visual Studio文件,然后打开Visual Studio。这也许能解决你的问题。


修复第6部分:

如果没有工作,检查是否有错误:

“GetReferenceNearestTargetFrameworkTask"未找到任务

  1. 在这里安装Nuget PackageManager

  2. 重启Visual Studio。

更多信息见答案。


修复第7部分

确保所有项目都已加载。 在解决方案资源管理器中,它会告诉你# of #项目。 如果没有显示所有项目,右键单击“解决方案(# of # projects)”;

.单击“加载项目”

我找到了另一种更方便的方法来解决这个问题:

  1. 在“解决方案资源管理器”中选择损坏的文件。
  2. 打开它的属性。
  3. 切换领域“建立行动”;从“Compile"None"“帮助”。
  4. 然后切换回“编译”。

这将以某种方式杀死Unity和Visual Studio之间的同步。

下一次Visual Studio重新加载项目时,它将提示一个警告。 只要点击“丢弃”。

在Visual Studio中卸载和重新加载项目:

  • 右键单击解决方案资源管理器中的项目
  • 选择卸载项目
  • 选择重新加载项目

固定!

我发现这个解决方案是最好的(最简单的),我遇到过很多次这个问题。

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

我发现我的解决方案是从visual studio本身创建.cs文件,而不是unity编辑器

  • 右键单击解决方案资源管理器中的项目文件夹
  • 添加>新项目
  • 在右上方的搜索栏中输入“unity”
  • 选择“CSharp MonoBehaviour”
  • 在底部命名你的脚本,然后点击添加

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

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

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

两个备选方案:

解决1

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

首先删除自动生成的Visual Studio文件: .csproj .user . sln < / p >

然后从Unity进入PlayerSettings,在“其他设置”下将“脚本运行时版本”从稳定3.5更改为实验性4.6。

然而,这并没有解决我的问题。

修复2

我注意到所有与Unity相关的代码都带有黄色警告。检查您的错误日志,看看情况是否如此。特别是查看是否得到以下错误:getreferenceNearestTargetframeworkTask

如果是,试试: 重新启动Visual Studio安装程序

在Build Tools 2017中,单击“修改”,

确保勾选“Nuget目标和构建任务”。如果你点击通用Windows平台开发,这应该会被勾选。

  1. 在Visual Studio中选择项目
  2. 点击“刷新”按钮

enter image description here

在我的情况下,正确的。net版本没有安装在我的PC上。我在我的电脑上安装了。net 3.5,这对我来说很有效。

对于Windows或macOS:

下载/安装Visual Studio IDE(带有Unity工具)

安装时,确保包含安装

使用Unity开发游戏

enter image description here

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

enter image description here

从那里,你应该能够看到你在寻找什么。

例如:

enter image description here

enter image description here

Linux(建议):

尝试Monodevelop - 额外的信息,它提供了代码补全/提示。

我解决了在WIN上安装与我的Unity项目中配置的相同版本的。net。(玩家设置)

我的自动补全也没有工作,因为Visual Studio工具的统一没有安装。因此,在安装之后,删除自动生成的Visual Studio文件。其他人说你再次打开文件,问题就解决了,但事实并非如此。

诀窍在于:你不需要双击文件,而是需要在Unity中右键单击“open c# Project”来打开c#文件。

以上的方法对我来说都没用。然而,我打开ProjectName.CSPROJ文件并手动添加了新文件,它就像魅力一样工作

我面临的问题是c#项目的目标是不同的。net框架(4.7.2),而Unity项目的目标是不同的(4.7.2)。NET 3.5)。

我通过将Unity中的目标更改为-来解决这个问题

文件->构建设置->播放器设置->其他设置-> API 兼容性级别:将其设置为您已有的.NET版本 安装(检查你的。net版本在这里)。在我的例子中,它是4.x

在此之后,Visual Studio工作得很好,自动更正也被修复了。

  • 转到“工具”菜单上的“选项”,然后选择“环境”节点中的“文档”。(如果列表中没有“文档”,请在“选项”对话框中选择“显示所有设置”。)
  • 在“解决方案资源管理器中的杂项文件”上打勾,然后单击确定。(此选项在解决方案资源管理器中显示“杂项文件”节点。杂项文件是指与项目或解决方案不关联的文件,但如果勾选此选项,则可以出现在解决方案资源管理器中以方便您。)
  • 在解决方案资源管理器的“杂项文件”下找到您的文件。然后拖放你的文件到它应该属于的地方,瞧!这将把文件复制到您放置它的地方。您现在可以安全地删除杂文件文件夹下的旧文件,如果您希望这样做

学分:https://stackoverflow.com/a/47662523/10471480

< br >

如果脚本文件夹不可见:

  • 在解决方案资源管理器中单击“显示所有文件”
  • 找到Scripts文件夹。
  • 右键单击脚本,选择“包含在项目中”
我工作的是,我复制了破碎类中的所有代码,并删除了该文件。 然后,我打开一个具有相同名称的空文件并粘贴回来

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

试试这个,

  1. 在Unity编辑器进入菜单,点击编辑->偏好→外部工具->外部脚本编辑器。将其设置为Visual Studio(您安装的VS版本)。

  2. 现在在菜单栏点击编辑>项目设置->玩家设置->其他设置->在配置下->检查API兼容性级别>将其更改为您安装的. net版本。在我的例子中,我将它设置为.Net 4.x

现在如果Visual Studio正在运行,转到Visual Studio,它会要求重新加载项目。重新加载项目。检查它是否工作,如果不能关闭Visual Studio。现在从Unity Editor中打开cs文件,现在它应该工作了。

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

请记住,如果你正在使用ReSharper工具,它将覆盖智能感知并显示它自己的。要改变这一点,在VS上,点击扩展-> ReSharper -> Options -> IntelliSense -> General,然后选择Visual Studio而不是ReSharper。

在重新启动和/或重新安装VS之前,首先尝试打开任何其他项目,看看智能是否工作,如果是这样,那么问题可能在于您当前的项目。首先,最有可能的受害者是带有挂起更新的NUGET包。为了解决这个问题,

  1. 右键单击引用
  2. 继续管理NUGET包下的NUGET包
  3. 继续更新安装更新和重新检查智能

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

尝试使用组合:Ctrl + Alt +空格

上面的方法之一是为我工作,我刚刚找到了这个问题的解决方案,
1. 首先,进入项目目录并删除.sln文件
2. 第二,进入unity,双击你的脚本。那么Visual Studio将会打开一个错误, enter image description here < / p >

  1. 然后单击确定并关闭Visual Studio编辑器。
  2. 最后,关闭你的Windows Defender,然后转到你的项目目录,会有.csproj文件。只需双击并从Visual Studio编辑器中打开它,打开assets文件夹中的scripts文件夹,然后打开脚本,自动完成将会非常好地工作。

2020年更新Visual Studio Community 2019和Unity 2019.3:

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

  2. 如果你现在在Unity中添加一个新的c#脚本,并用Visual Studio(自动)打开它,它不会被描述为“杂项”;在窗口的顶部,但与“装配- csharp ",并自动完成工作。

如果你已经做了以上所有的工作,仍然没有工作,就试试这个: 注意:你应该已经更新了VS。 截图from visual studio < / p >

Goto Unity > edit> preference >外部工具>外部脚本编辑器。 Unity截图 对我来说,我没有选择“visual studio”作为外部脚本编辑器,所以它不起作用。当我选择这个并双击unity中的c#文件时,它就开始工作了

我希望它也能帮助到你。

另一个可能的解决方案:

  1. 在项目窗口中,单击Assets文件夹
  2. 右击,并创建-> c#脚本
  3. 双击它,然后等待。

出于某种原因,这行得通。

出于某种奇怪的原因,“unity游戏开发”;工具可以在Visual Studio中被禁用。

为了解决这个问题..

  1. Open Visual Studio
  2. 转到扩展→“管理扩展”;→安装
  3. 查找“Visual Studio 2019 Tools for unity”;
  4. 如果已禁用,请启用
  5. 重新启动和

信用Yuli Levtov的回答另一个线程

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

修复Unity与Visual Studio断开连接的问题

enter image description here

在Unity编辑器中,选择Edit >选择菜单。

在左侧选择External Tools选项卡。

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

单击“重新生成文件”

你做了

下面的方法对我有用。

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

enter image description here

嗯,也许你可以把我的指南看作是一个可选的方法。我在使用Unity 2020和Visual Studio Code 1.26时遇到了这个问题 为了解决这个问题,我遵循以下步骤:

  1. 在Visual Studio中的c#插件中
  2. https://www.monodevelop.com/download安装Mono
  3. 让我们通过which mono命令来查看Mono安装在Mac中的位置。例如,在我的Mac中,它是/Library/Frameworks/Mono.framework/Versions/Current
  4. 回到c#插件,打开它的设置,并在设置中更改下面的设置。插件的Json:
    "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current",
"omnisharp.useGlobalMono": "always"

开始....

如果你使用Resharper与Microsoft Visual Studio,你需要去 “扩展→ReSharper→扩展Manager"并安装扩展“Unity支持”。 就像魔法一样!< / p >

从Unity中选择Edit选项,然后~>Preferences... ~比;External Tools,然后打开Built-In Packages。我尝试了所有的解决方案,只有这一个帮助我,我打开它的机会!

在Unity中,Edit>Preferences>外部工具 __abc0

.单击“重新生成项目文件”

你安装了这个? unity < / p >

安装Visual Studio和Unity 下载Visual Studio安装程序,如果已经安装,则打开它。 对于所需版本的Visual Studio,选择“修改”(如果已经安装)或“安装”(对于新安装)。 选择workload选项卡,然后选择Game development with Unity workload。 如果Unity尚未安装,请在安装程序的可选部分中选择Unity Hub复选框。

.单击“Modify”或“Install”完成安装

“Preferences"→“外部tools"→设置你的外部工具

这是一个解决办法。对于VS,你也可以使用JetBrains的ReSharper,但我推荐使用Rider。那一本也是学生免费的。 它提供的性能不如visual studio,但肯定比VS+Resharper好

祝你今天愉快,伙计)

这些操作解决了我在Visual Studio 2022中项目的问题

解决1

    <李>解决方案
      <李> Assembly-CSharp(右键)
      • 加载整个依赖树

修复2

    <李>解决方案
      <李> Assembly-CSharp
        <李>引用
        • 双击任意库强制加载