当我想编辑 C# Unity 脚本时,它们会在 Visual Studio 中打开。它应该为所有 Unity 相关的代码提供自动完成,但却无法正常工作。
下面您可以看到缺少的功能:
如图所示,transform
对象不会打开自动完成菜单。
Unity 版本:5.5.2f1
Visual Studio 2015
已安装 Visual Studio Tools for Unity
当我想编辑 C# Unity 脚本时,它们会在 Visual Studio 中打开。它应该为所有 Unity 相关的代码提供自动完成,但却无法正常工作。
下面您可以看到缺少的功能:
如图所示,transform
对象不会打开自动完成菜单。
Unity 版本:5.5.2f1
Visual Studio 2015
已安装 Visual Studio Tools for Unity
由于脚本显示了“Miscellaneous Files”而不是项目名称,因此没有自动完成。请看下面来自您问题视频的图像:
“Miscellaneous Files”消息可能会因为以下原因发生:
如果您从Unity Editor打开Unity C#文件而不是从另一个文件夹打开它,则可能会发生。
这也可能是因为Unity崩溃而Visual Studio仍然打开,因此损坏了某些文件。
当Unity关闭然后重新打开但不再连接到Visual Studio时,就会出现这种情况。当打开Visual Studio时,您会得到“Miscellaneous Files”,但自动完成不会出现。
如果未安装Visual Studio Tools for Unity,则会出现这种情况。
当您从Unity创建脚本,然后在Unity完成处理或圆形图标动画结束之前快速打开它时,也会发生这种情况。
大多数情况下,重新启动Unity和Visual Studio应该可以解决此问题。
我无法确定哪个原因导致了问题,但我将介绍最可能的解决方法。
修复第1部分:
从此链接下载并安装Visual Studio Tools for Unity。在Unity和Visual Studio都关闭的情况下执行此操作。
从 Unity 编辑器中,前往 Edit → Preferences... → External Tools。在 External Script Editor 下拉菜单中,将其更改为 Visual Studio 2015。
修复第二部分:
如果新创建的 C# 文件显示为 Miscellaneous,请按照以下说明进行操作:
从 Visual Studio 中,前往 Tools → Options... → Tools for Unity → Miscellaneous。在 Show connectivity icon 下面,将其设置为 true
,然后重新启动 Visual Studio。
重新启动后,Visual Studio 中应该会出现连接图标。点击它,然后选择要连接的 Unity 实例。红色的“x”图标现在应该变成棕色的勾选标志图标。现在,在 Unity 中创建新的 C# 文件时,应该不会显示为 Miscellaneous。
修复第三部分:
仍然没有解决吗?
重新导入项目,然后打开 C# 项目。
关闭 Visual Studio。
从Unity开始,通过进入 Assets → Reimport All 重新导入工程。
然后,通过进入 Assets → Open C# Project 在Visual Studio中打开该项目。这将重新加载项目并修复可能存在的解决方案文件问题。
修复第4部分::
仍然没有解决吗?
逐个修复每个C#文件。
修复第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。这可能会解决您的问题。
修复Part 6:
如果不起作用,请检查是否出现此错误:
The "GetReferenceNearestTargetFrameworkTask" task was not found
从此处安装Nuget PackageManager。
重新启动Visual Studio。
有关更多信息,请参见此答案。
修复Part 7
确保所有项目都已加载。 在“解决方案资源管理器”中,应显示# of # projects。
如果没有显示所有的项目,右键点击“解决方案 (#个#个项目)”并单击“加载项目”。*.csproj
和*.sln
文件,然后重新启动Unity。这通常可以解决问题。 - derHugo我找到了另一种更方便的方法来解决这个问题:
这样会以某种方式破坏Unity和Visual Studio之间的同步。
下次 Visual Studio 重新加载项目时,它会弹出警告。 只需单击“放弃”即可。
在 Visual Studio 中卸载和重新加载项目:
搞定了!
我发现这种解决方法最好(最简单),因为我多次遇到了这个问题。
这个页面帮助我解决了问题。
在Unity Editor中,选择“编辑”>“首选项”菜单。
在左边选择“外部工具”选项卡。
对于“外部脚本编辑器”,请选择您拥有的Visual Studio版本。
点击“重新生成文件”
完成!
今天我使用Visual Studio 2017 15.4.5和Unity 2017遇到了同样的问题。
我通过在Visual Studio中右键单击项目并将目标框架从3.5更改为4.5来解决了这个问题。
希望这可以帮助其他遇到类似情况的人。
两种备选方案:
解决方法1
@singleton指引了我一个方向。不要在Visual Studio中更改目标,而是在Unity中更改目标,因为该项目是自动生成的。
首先删除自动生成的Visual Studio文件: .csproj .user .sln
然后在Unity中转到PlayerSettings,在“其他设置”下将“脚本运行时版本”从稳定版3.5更改为实验版4.6。
但是,这对我没有起作用。
解决方法2
我注意到所有与Unity相关的代码引用都被标记为黄色警告。检查您的错误日志,看看是否是这种情况。特别是看看是否出现以下错误:getreferenceNearestTargetframeworkTask
如果是,请尝试: 重新启动Visual Studio Installer。
在Build Tools 2017上,点击Modify,
确保“Nuget targets and build tasks”已被选中。如果单击Universal Windows Platform development,则应该会变为选中状态。
使用 Visual Studio Community 2019 和 Unity 2019.3 进行更新:
以管理员身份打开“Visual Studio 安装程序”,选择修改当前安装并添加“针对 Unity 的游戏开发”
如果现在在 Unity 中添加新的 C# 脚本,并使用 Visual Studio 打开它(自动),则窗口顶部不再显示“杂项”,而是显示“Assembly-CSharp”,并且自动完成功能正常工作。