【问题标题】:Unity Scripts edited in Visual studio don't provide autocomplete在 Visual Studio 中编辑的 Unity 脚本不提供自动完成功能
【发布时间】:2017-07-24 15:54:23
【问题描述】:

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

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

正如所见,transform 对象没有打开自动完成菜单。

Unity 版本:5.5.2f1
视觉工作室 2015
已安装 Visual Studio Tools for Unity

【问题讨论】:

  • translate.google.com :) 制作视频并将其上传到 YouTube 以描述错误 +1 xd
  • 好的,All try... I have a Little problem with scripts. When Im 用 Visual Studio 为 Unity 编写 C# 脚本,好像我在用记事本工作,没有“提示”(对吗?),我必须写得很慢.请看视频。一开始是正常情况(来自教程),第二部分是我的问题。
  • 我想说你问的是“自动完成”,而不是工具提示。
  • 什么 Visual Studio 版本和什么 Unity 版本?
  • Unity 版本:5.5.2f1 / Visual Studio 2015 / Visual Studio Tools for Unity 已安装

标签: c# visual-studio unity3d intellisense


【解决方案1】:

没有自动完成,因为脚本显示“Miscellaneous Files”而不是项目名称。看看下面来自您问题视频的图片:

出现“Miscellaneous Files”消息的原因有很多:

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

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

  3. 这可能是因为 Unity 已关闭然后重新打开但不再连接到 Visual Studio。打开 Visual Studio 时,您会看到“Miscellaneous Files”并且没有自动完成功能。

  4. 当未安装 Visual Studio Tools for unity 时会发生这种情况。

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


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

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

修复第 1 部分

  1. this 链接下载并安装 Visual Studio Tools for unity。在 Unity 和 Visual Studio 都关闭时执行此操作。

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


修复第 2 部分

如果新创建的 C# 文件显示为 Miscellaneous,请按照以下说明进行操作:

  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. 选择不自动完成的脚本,然后右键单击并选择包含在项目中


修复第 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. 再次从 Unity 双击脚本会生成新的 Visual Studio 文件,然后打开 Visual Studio。这可能会解决您的问题。


修复第 6 部分

如果不起作用,请检查您是否遇到this 错误:

找不到“GetReferenceNearestTargetFrameworkTask”任务

  1. here 安装Nuget PackageManager

  2. 重新启动 Visual Studio。

更多信息请参见this 回答。

【讨论】:

  • 感谢其他文件指针!关闭 VS,删除 VS 项目和 sln,然后在 Unity 中双击脚本(因此重新生成项目文件并重新打开 VS)为我修复了它。我建议在“重新导入所有”按钮之前尝试一下,因为对于非平凡的项目来说这是午餐/过夜。
  • 这是个好建议。希望任何阅读本文的人都能看到此评论
  • 这通常是由创建新脚本或将它们移动到 Unity 中的不同文件夹引起的。每当重新启动 Unity 并且 VS 无法解决它时,我也同样删除了 *.csproj*.sln 文件并启动 Unity。这通常有效
  • @chrisvarnz 解决方案在尝试了所有其他建议后对我有用。
  • @gollumullog 好。由于这适用于多人,我已经更新了我的答案以包括它。
【解决方案2】:

试试这个,

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

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

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

【讨论】:

  • 我也一样,谢谢!尝试了一切,但只有这个解决了它。
  • 这是真正的答案。这需要在顶部!
  • 这对我也有用。此外,我在 Unity 2020.2.0a13 中做的另一件事是取消选中并再次选中 Edit/Project Settings/Player/Other Settings: Auto Graphics API 中的标记。重新启动 Visual Studio 后,自动完成功能又回来了:D
  • 这是唯一对我有用的方法,非常感谢!
  • 请为这个投票!这是 2021 年的解决方案
【解决方案3】:

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

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

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

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

【讨论】:

    【解决方案4】:

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

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

    希望对你也有帮助。

    【讨论】:

    • 非常适合在 Unity 之前安装了 Visual Studio 的人,这对我来说在安装了 Unity 的 VS 工具后也有用。
    【解决方案5】:

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

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

    已修复!

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

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

    【讨论】:

    • 感谢您的帮助!这行得通,但我觉得我们回到了 90 年代,我们需要重新启动 Windows,只是这次是 VS 2017。
    【解决方案6】:
    1. 在 Visual Studio 中选择项目
    2. 点击“刷新”按钮

    【讨论】:

    • 哇!对我没有任何帮助;重新安装 VS,甚至重新安装 Unity 以便重新安装 VS,删除 .sln 和 .cjsproj 文件以便重新生成它们。没有任何帮助..但最后在解决方案资源管理器中单击以显示文件夹似乎可以做到这一点:o
    【解决方案7】:

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

    Fix for Unity disconnected from Visual Studio

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

    选择左侧的外部工具选项卡。

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

    点击重新生成文件

    你完成了

    【讨论】:

      【解决方案8】:

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

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

      希望这可以帮助遇到类似情况的其他人。

      【讨论】:

        【解决方案9】:

        两个备选方案:

        修复 1

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

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

        然后从 Unity 中转到 PlayerSettings 并在“其他设置”下将“脚本运行时版本”从 Stable 3.5 更改为 Experimental 4.6。

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

        修复 2

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

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

        在 Build Tools 2017 上,点击修改,

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

        【讨论】:

          【解决方案10】:

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

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

          2. 如果您现在在 Unity 中添加一个新的 c# 脚本,并使用 Visual Studio(自动)打开它,它不会在窗口顶部描述为“杂项”,而是使用“Assembly-CSharp”,并且自动完成功能有效.

          【讨论】:

            【解决方案11】:

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

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

            【讨论】:

            • 如果您已经创建了脚本,但突然出现此问题,您是否要删除所有脚本并从 Visual Studio 重新创建它们?
            • @Programmer 好吧,我会使用您的第 4 部分解决方案来修复已经错误的脚本,但我总是使用 Visual Studio 创建新脚本,因为除非我创建,否则您的解决方案都不会阻止新脚本出错来自视觉工作室的文件
            【解决方案12】:

            在我的情况下,我的电脑上没有安装正确的 .net 版本。我在我的电脑上安装了 .net 3.5,这对我有用。

            【讨论】:

            • 您的回答让我想到了将 Unity 播放器设置中的 API 兼容性级别从 .Net 2.0 更改为 .Net 4.x。然后在 Visual Studio 中重新加载项目。现在一切正常。
            【解决方案13】:

            对于 Windows 或 macOS:

            下载/安装Visual Studio IDE (with Unity Tools)

            安装时,请确保包含安装

            使用 Unity 进行游戏开发

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

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

            例如:

            对于 Linux(建议):

            试试Monodevelop - Additional Information,它提供代码完成/提示。

            【讨论】:

              【解决方案14】:

              我的自动完成功能也没有工作,因为 Visual Studio Tools for Unity 没有安装。因此,安装后,删除自动生成的 Visual Studio 文件。别人说你再打开文件,问题就解决了,其实不然。

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

              【讨论】:

                【解决方案15】:

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

                我通过在 Unity 中更改目标来解决此问题-

                文件 -> 构建设置 -> 播放器设置 -> 其他设置 -> API 兼容级别:将其设置为您已有的 .NET 版本 已安装(检查您的 .NET 版本 here)。就我而言,它是 4.x

                此后,Visual Studio 完美运行,自动更正也得到修复。

                【讨论】:

                • 这对我有用。我将我的 API 兼容性级别更改为 .Net 4.x,然后 Visual Studio 要求重新加载项目。我重新加载了项目。然后我关闭了 Visual Studio,从 Unity 编辑器打开了 cs 文件,现在一切正常。
                【解决方案16】:

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

                【讨论】:

                  【解决方案17】:

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

                  解决这个问题..

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

                  感谢Yuli Levtov's answeranother Thread

                  【讨论】:

                    【解决方案18】:

                    以下对我有用。

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

                    【讨论】:

                      【解决方案19】:

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

                      【讨论】:

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

                        致谢:https://stackoverflow.com/a/47662523/10471480


                        如果脚本文件夹不可见:

                        • 点击解决方案资源管理器中的“显示所有文件”
                        • 找到 Scripts 文件夹。
                        • 右键单击脚本并选择“包含在项目中”

                        【讨论】:

                          【解决方案21】:

                          请记住,如果您使用的是 ReSharper 工具,它将覆盖 IntelliSense 并显示它自己的。要改变这一点,在 VS 上,转到 Extensions -> ReSharper -> Options -> IntelliSense -> General 然后选择 Visual Studio 而不是 ReSharper。

                          【讨论】:

                            【解决方案22】:

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

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

                            【讨论】:

                              【解决方案23】:

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

                              【讨论】:

                                【解决方案24】:

                                另一个可能的解决方法:

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

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

                                【讨论】:

                                  【解决方案25】:

                                  以上解决方案都不适合我。但是我打开了ProjectName.CSPROJ 文件并手动添加了新文件,它就像魅力一样工作

                                  【讨论】:

                                    【解决方案26】:

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

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

                                    【讨论】:

                                      【解决方案27】:

                                      尝试组合:Ctrl + Alt + Space

                                      【讨论】:

                                        【解决方案28】:

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

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

                                        【讨论】:

                                          【解决方案29】:

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

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

                                          我们来了....

                                          【讨论】:

                                            【解决方案30】:

                                            如果您将 Resharper 与 Microsoft Visual Studio 一起使用,则需要转到 “扩展 -> ReSharper -> 扩展管理器”并安装扩展“Unity 支持”。 像魔术一样工作!

                                            【讨论】:

                                              猜你喜欢
                                              • 1970-01-01
                                              • 1970-01-01
                                              相关资源
                                              最近更新 更多