Unity Scripts edited in Visual studio don't provide autocomplete
当我要编辑C#Unity脚本时,它们会在Visual Studio中打开。 它应该为所有与Unity相关的代码提供自动完成功能,但是不起作用。
在这里,您可以看到缺少的功能:
如图所示,
Unity version: 5.5.2f1
Visual studio 2015
Visual Studio Tools for Unity is installed
没有自动完成功能,因为脚本显示的是"杂项文件"而不是项目名称。请看下面的视频,该视频来自您所提问的视频:
出现"杂项文件"消息的原因有很多:
当您从另一个文件夹中打开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。
修复第2部分:
如果新创建的C#文件杂类出现,请按照以下说明进行操作:
在Visual Studio中,转到工具→选项...→Unity工具→其他。在"显示连接性图标"下,将其设置为
重新启动时,连接图标现在在Visual Studio中应该可用。单击它,然后选择要连接的Unity实例。红色的" x"图标现在应该变成棕色的对勾图标。现在,当您在Unity中创建新的C#文件时,它应该打开而不会说其他。
修复第3部分:
还是不固定?
重新导入项目,然后打开C#项目。
关闭Visual Studio。
从Unity,转到资产→全部重新导入,重新导入项目。
现在,通过转到Assets→Open C#Project在Visual Studio中打开该项目。这将重新加载项目并修复可能的解决方案文件问题。
修复第4部分:
还是不固定?
分别修复每个C#文件。
单击显示所有文件图标。
选择不会自动完成的脚本,然后右键单击并选择"包括在项目中"。
修复第5部分:
还没有固定?
克里斯瓦恩兹(Chrisvarnz)可以为这个特殊的解决方案服务,它似乎已经为多个人服务。
关闭Visual Studio
转到项目目录并删除所有生成的Visual Studio文件。
这些是要删除的文件扩展名:
-
.csproj -
.user -
.sln
例:
假设您的项目名称为
-
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/
如果您已完成上述所有操作但仍无法正常工作,请尝试以下操作:
注意:您应该已经更新了VS。
转到Unity>编辑>首选项>外部工具>外部脚本编辑器。
对于我来说,我没有为外部脚本编辑器选择" 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"
- 在底部命名您的脚本,然后单击添加
尝试按
就我而言,我的PC上未安装正确的.net版本。我在PC上安装了.net 3.5,它对我有用。
对于Windows或macOS:
下载/安装Visual Studio IDE(使用Unity工具)
安装时,请确保包括安装
Game development with Unity
然后使用Unity(您可以双击一个C#文件),打开一个新的C#项目,Visual Studio IDE应该使用新的项目结构打开。
从那里,您应该能够看到想要的东西。
例如:
对于Linux(建议):
尝试Monodevelop-其他信息,它提供代码完成/提示。
我解决了在Unity项目中配置的WIN上安装相同版本的.NET。 (玩家设置)
由于未安装Visual Studio Tools for Unity,因此我的自动完成功能也不起作用。因此,在安装该文件后,请删除自动生成的Visual Studio文件。其他人则说您再次打开文件,问题已解决,但事实并非如此。
诀窍是:无需正常双击文件,而是需要通过右键单击然后单击"打开C#项目"从Unity打开C#文件。
- 转到"工具"菜单上的"选项",然后在"环境"节点中选择"文档"。 (如果文档未出现在列表中,请在"选项"对话框中选择"显示所有设置"。)
- 在"解决方案资源管理器中的其他文件"上打勾,然后单击"确定"。 (此选项在解决方案资源管理器中显示"其他文件"节点。其他文件是与项目或解决方案不相关的文件,但如果您勾选此选项,则可以在解决方案资源管理器中显示,以方便您使用。)
- 在解决方案资源管理器中的"其他文件"下找到您的文件。然后将您的文件拖放到应属于的位置,瞧!这会将文件复制到放置的位置。现在,您可以安全地删除"杂项文件"文件夹下的旧文件。
积分:https://stackoverflow.com/a/47662523/10471480
如果脚本文件夹不可见:
- 在解决方案资源管理器中单击"显示所有文件"
- 找到脚本文件夹。
- 右键单击脚本,然后选择"包含在项目中"
由于某些奇怪的原因,"使用Unity开发游戏"工具可能会在Visual Studio中被禁用。
要解决这个问题。
感谢Yuli Levtov在另一个主题上的回答
对我起作用的是,我将所有代码复制到了损坏的类中,并删除了该文件。
然后,我打开一个空文件并粘贴。
结果:优美的语法亮点又回来了!
请记住,如果您使用的是ReSharper工具,它将覆盖IntelliSense并显示其自身。要更改此设置,请在VS上转到"扩展"->" ReSharper"->"选项"->" IntelliSense"->"常规",然后选择" Visual Studio"而不是" ReSharper"。
在重新启动和/或重新安装VS之前,首先尝试打开任何其他项目,以查看Intellisence是否有效,如果可以,那么问题可能出在当前项目上。首先,最可能的受害者是带有待定更新的NUGET软件包。为了解决这个问题,
我尝试了所有这些方法,但最终发现我需要在解决方案资源管理器中右键单击该解决方案,并添加现有项并在Window的资源管理器中找到C#程序集文件。似乎有不计其数的不同问题使您出现此错误,这可能是最简单的解决方案。如果您从统一位置双击脚本,似乎并不会拖拽程序集。
以上方法之一对我有用,我刚刚找到了解决此问题的方法,
1.首先,转到项目目录并删除
2.其次,统一并双击脚本。然后,Visual Studio将打开并出现错误,
另一个可能的解决方法:
由于某种原因,这项工作。
以上解决方案均不适用于我。但是,我打开了
尝试使用组合:Ctrl + Alt + Space