关于c#:在Visual Studio中编辑的Unity脚本不提供自动完成功能

Unity Scripts edited in Visual studio don't provide autocomplete

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

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

Video of missing autocomplete feature

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

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


没有自动完成功能,因为脚本显示的是"杂项文件"而不是项目名称。请看下面的视频,该视频来自您所提问的视频:

enter image description here

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

  • 当您从另一个文件夹中打开Unity C#文件而不是从Unity Editor中打开它时,可能会发生这种情况。

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

  • 之所以会发生这种情况,是因为先关闭了Unity,然后又重新打开了它,但不再连接到Visual Studio。打开Visual Studio时,将显示"杂项文件",并且没有自动完成功能。

  • 如果未安装Visual Studio Tools for unity,则可能会发生这种情况。

  • 当您从Unity创建脚本时,请在Unity完成处理之前或圆形图标动画素材完成动画设置之前快速将其打开。


  • 大多数情况下,重新启动Unity和Visual Studio应该可以解决此问题。

    我无法确定是哪个引起了问题,但是我将介绍解决此问题的最有可能的解决方案。

    修复第1部分:

  • 从此链接下载并安装Visual Studio Tools以获得统一。在Unity和Visual Studio都关闭时执行此操作。

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

    enter image description here


  • 修复第2部分:

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

  • 在Visual Studio中,转到工具→选项...→Unity工具→其他。在"显示连接性图标"下,将其设置为true,然后重新启动Visual Studio。

    enter image description here

  • 重新启动时,连接图标现在在Visual Studio中应该可用。单击它,然后选择要连接的Unity实例。红色的" x"图标现在应该变成棕色的对勾图标。现在,当您在Unity中创建新的C#文件时,它应该打开而不会说其他。

    enter image description here


  • 修复第3部分:

    还是不固定?

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

  • 关闭Visual Studio。

  • 从Unity,转到资产→全部重新导入,重新导入项目。

    enter image description here

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

    enter image description here


  • 修复第4部分:

    还是不固定?

    分别修复每个C#文件。

  • 单击显示所有文件图标。

    enter image description here

  • 选择不会自动完成的脚本,然后右键单击并选择"包括在项目中"。

    enter image description here


  • 修复第5部分:

    还没有固定?

    克里斯瓦恩兹(Chrisvarnz)可以为这个特殊的解决方案服务,它似乎已经为多个人服务。

  • 关闭Visual Studio

  • 转到项目目录并删除所有生成的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

    不要删除其他任何内容。

  • 再次从Unity双击脚本,该脚本将生成新的Visual Studio文件,然后打开Visual Studio。这样可以解决您的问题。


  • 修复第6部分:

    如果不起作用,请检查是否有此错误:

    The"GetReferenceNearestTargetFrameworkTask" task was not found

  • 从这里安装Nuget PackageManager。

  • 重新启动Visual Visual。

  • 有关更多信息,请参见此答案。


    试试这个,

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

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

  • 现在,如果Visual Studio已在运行,则转到Visual Studio,它将要求重新加载项目。重新加载项目。如果无法关闭Visual Studio,请检查它是否有效。现在从Unity Editor中打开cs文件,现在它应该可以工作了。


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

  • 在解决方案资源管理器中选择损坏的文件。
  • 打开其属性。
  • 将"构建操作"字段从"编译"切换为"无"。
  • 然后将其切换回"编译"。
  • 这将以某种方式终止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中选择项目
  • 点击"刷新"按钮
  • enter image description here


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

    转到Unity>编辑>首选项>外部工具>外部脚本编辑器。
    Unity screenshot
    对于我来说,我没有为外部脚本编辑器选择" Visual Studio",它不起作用。一旦我选择了这个,并从整体上双击c#文件,它就开始工作。

    希望对您有帮助。


    我今天在使用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,然后在"其他设置"下,将"脚本运行时版本"从稳定版3.5更改为实验版4.6。

    但是,这并不能解决我的问题。

    修复2

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

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

    在Build Tools 2017上,单击Modify,

    确保选中" Nuget目标和构建任务"。如果您单击"通用Windows平台"开发,则应打勾。


    我面临的问题是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可以正常工作,并且自动更正也已修复。


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

  • 以管理员身份打开Visual Studio Installer,选择修改当前安装并添加" Unity游戏开发"

  • 如果您现在在Unity中添加一个新的c#脚本,并使用Visual Studio(自动)将其打开,则在窗口顶部不会将其描述为"其他",而将其描述为" Assembly-CSharp",则自动完成功能会起作用。


  • 我通过从Visual Studio本身而不是统一编辑器创建.cs文件找到了解决方案

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


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


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


    对于Windows或macOS:

    下载/安装Visual Studio IDE(使用Unity工具)

    安装时,请确保包括安装

    Game development with 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-其他信息,它提供代码完成/提示。


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


    由于未安装Visual Studio Tools for Unity,因此我的自动完成功能也不起作用。因此,在安装该文件后,请删除自动生成的Visual Studio文件。其他人则说您再次打开文件,问题已解决,但事实并非如此。

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


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

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

    如果脚本文件夹不可见:

    • 在解决方案资源管理器中单击"显示所有文件"
    • 找到脚本文件夹。
    • 右键单击脚本,然后选择"包含在项目中"

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

    要解决这个问题。

  • 打开Visual Studio
  • 转到扩展→"管理扩展"→已安装
  • 查找" Visual Studio 2019 Unity工具"
  • 如果禁用,则启用它
  • 重启VS

  • 感谢Yuli Levtov在另一个主题上的回答


    对我起作用的是,我将所有代码复制到了损坏的类中,并删除了该文件。
    然后,我打开一个空文件并粘贴。

    结果:优美的语法亮点又回来了!


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


    在重新启动和/或重新安装VS之前,首先尝试打开任何其他项目,以查看Intellisence是否有效,如果可以,那么问题可能出在当前项目上。首先,最可能的受害者是带有待定更新的NUGET软件包。为了解决这个问题,

  • 右键单击参考
  • 继续管理NUGET软件包下的NUGET软件包
  • 进行更新安装更新并重新检查智能

  • 我尝试了所有这些方法,但最终发现我需要在解决方案资源管理器中右键单击该解决方案,并添加现有项并在Window的资源管理器中找到C#程序集文件。似乎有不计其数的不同问题使您出现此错误,这可能是最简单的解决方案。如果您从统一位置双击脚本,似乎并不会拖拽程序集。


    以上方法之一对我有用,我刚刚找到了解决此问题的方法,
    1.首先,转到项目目录并删除.sln文件
    2.其次,统一并双击脚本。然后,Visual Studio将打开并出现错误,
    enter image description here

  • 然后单击"确定"并关闭Visual Studio编辑器。
  • 最后,关闭Windows Defender,然后转到项目目录,将出现.csproj文件。只需双击并从Visual Studio编辑器中打开它,然后打开资产文件夹中的scripts文件夹,然后打开脚本,自动完成功能就可以正常工作了。

  • 另一个可能的解决方法:

  • 在项目窗口中,单击"资产"文件夹
  • 右键单击,然后创建-> C#脚本
  • 双击,然后等待。
  • 由于某种原因,这项工作。


    以上解决方案均不适用于我。但是,我打开了ProjectName.CSPROJ文件并手动添加了新文件,它的工作方式就像魅力


    尝试使用组合:Ctrl + Alt + Space