Pau*_*aul 14 c# unity-game-engine visual-studio-code
问题:智能感知不工作为统一的具体方法和功能(即Update
,FixedUpdate
,Awake
等等)。
它的工作,但是,对于非统一的具体方法(即IEnumerator
,void
,public
,float
,int
,等)和统一的具体变量(即Gameobject
,transform
,camera
,等),并统一命名空间特定(即UnityEngine
,UnityEditor
,Unity
,等)。
我正在使用:Visual Studio Code 1.41、Unity 3d 2018.4.15f1(我在使用 2019.2.x 时遇到了同样的问题)。
我尝试了以下解决方案但没有结果:
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
到 <TargetFrameworkVersion>(Currently installed version)</TargetFrameworkVersion>
但统一自动默认返回至v4.7.1可能的问题:
项目创建的 sln 文件读取
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{B2B58FB2-4462-6B0C-A872-40DD957E5FE0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B2B58FB2-4462-6B0C-A872-40DD957E5FE0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
StartupItem = Assembly-CSharp.csproj
EndGlobalSection
EndGlobal
Run Code Online (Sandbox Code Playgroud)
出于某种原因,sln 文件似乎用于 Visual Studio 2010。我不知道这是故意的还是这是问题所在。
在尝试解决方案 4 时,如上所述,Unity(或我所知道的 VS Code)会自动将 .NET 版本从我手动输入的任何内容更改为 4.7.1。我已经安装了 4.7.1,所以这可能不是问题。
额外的信息:
这是omnisharp日志:
Starting OmniSharp server at 2020. 1. 20. ?? 9:08:43
Target: c:\Users\stpau\New Unity Project\New Unity Project.sln
OmniSharp server started.
Path: C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\OmniSharp.exe
PID: 2232
[info]: OmniSharp.Stdio.Host
Starting OmniSharp on Windows 6.2.9200.0 (x64)
[info]: OmniSharp.Services.DotNetCliService
DotNetPath set to dotnet
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
Located 1 MSBuild instance(s)
1: StandAlone 16.3 - "C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin"
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
MSBUILD_EXE_PATH environment variable set to 'C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin\MSBuild.exe'
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
Registered MSBuild instance: StandAlone 16.3 - "C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin"
CscToolExe = csc.exe
CscToolPath = C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin\Roslyn
MSBuildExtensionsPath = C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild
MSBuildToolsPath = C:\Users\stpau\.vscode\extensions\ms-vscode.csharp-1.21.9\.omnisharp\1.34.9\.msbuild\Current\Bin
[info]: OmniSharp.Cake.CakeProjectSystem
Detecting Cake files in 'c:\Users\stpau\New Unity Project'.
[info]: OmniSharp.Cake.CakeProjectSystem
Could not find any Cake files
[info]: OmniSharp.MSBuild.ProjectSystem
Detecting projects in 'c:\Users\stpau\New Unity Project\New Unity Project.sln'.
[info]: OmniSharp.MSBuild.ProjectManager
Queue project update for 'c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj'
[info]: OmniSharp.Script.ScriptProjectSystem
Detecting CSX files in 'c:\Users\stpau\New Unity Project'.
[info]: OmniSharp.Script.ScriptProjectSystem
Could not find any CSX files
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.CSharpFormattingWorkspaceOptionsProvider, Order: 0
[info]: OmniSharp.MSBuild.ProjectManager
Loading project: c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.RenameWorkspaceOptionsProvider, Order: 100
[info]: OmniSharp.WorkspaceInitializer
Invoking Workspace Options Provider: OmniSharp.Roslyn.CSharp.Services.EditorConfigWorkspaceOptionsProvider, Order: 200
[info]: OmniSharp.WorkspaceInitializer
Configuration finished.
[info]: OmniSharp.Stdio.Host
Omnisharp server running using Stdio at location 'c:\Users\stpau\New Unity Project' on host 8980.
[info]: OmniSharp.MSBuild.ProjectManager
Successfully loaded project file 'c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj'.
[info]: OmniSharp.MSBuild.ProjectManager
Adding project 'c:\Users\stpau\New Unity Project\Assembly-CSharp.csproj'
[info]: OmniSharp.MSBuild.ProjectManager
Update project: Assembly-CSharp
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?我也在 reddit 和 Unity 论坛上问过这个问题,但没有成功。
小智 40
在最新版本的 VS Code 和 Omnisharp 中,我遇到了同样的问题并解决了在 Unity 中启用此选项的问题:
编辑 > 首选项 > 外部工具 > 生成所有 .csproj 文件。
fri*_*uck 19
使用 VSCode 1.41.1 和 Unity 2019.4.0f1 时遇到了同样的问题。
我可以按照以下步骤修复它:
在 Unity 中,转到Edit > Project Settings > Player > API Compatibility Level并将其更改为 .NET 4.x
重启 VSCode 和 Unity
IntelliSense 现在工作正常,我在 VSCode 中加载 .cs 文件时不再出现任何错误。
小智 9
MacOS(VSCode 1.56.2 + Unity 2020.3.10f1)
通过采取以下步骤,我能够使 Unity + VSCode 智能感知满意:
2.1) VSCode > Code > Preferences > Settings...
2.2) 搜索“global mono”...
2.3) 将“Use Global Mono”设置为“always”...
2.4) 重新启动 Omnisharp(底部弹出消息中的蓝色按钮)
3.1) Unity > 首选项 > 外部工具 > 将外部脚本编辑器设置更改为“Visual Studio Code” 3.2) Unity > 首选项 > 外部工具 > 生成所有 .csproj 文件(选中所有复选框)
通过这些步骤,我能够在 Unity 项目中以 .Net Standard 2.0 为目标,并在 VSCode 中使用智能感知。
小智 6
兄弟,我有答案给你。解决方案非常简单,您只需要确保您已经下载了这些工具:
你可以在 VSCode 上找到它们,安装后,关闭 VSCode 并重新打开。这就是全部。
对于与您的问题相同的问题,我一直在寻找我能找到的任何可能的解决方案,但答案就像鼠标的右手一样。
小智 5
对于那些至今仍在苦苦挣扎的人来说,有一个有保证的解决方案来解决这个问题,缺点是你不能使用.NET Standard 2.0
作为你的 API 兼容性级别。无论如何:
Edit > Project Settings > Player
,向下滚动至Configuration
并将您的 API 兼容性级别更改为.NET 4.x
。Window > Package Manager
并确保该Visual Studio Code Editor
软件包已更新到最新版本。Edit > Preferences > External Tools
并确保您使用 Visual Studio Code 作为外部脚本编辑器,然后按按钮Regenerate project files
。CTRL+SHIFT+P
打开命令选项板并重新启动 OmniSharp。小智 -14
这不是解决你的问题,但我认为它根本没有问题。不幸的是,目前 VS Code 的 IntelliSense 不应该适用于 Unity 特定的方法和函数,我相信它。
作为一种解决方法,您可以使用Unity 代码片段扩展,它将为 IntelliSense 带来一些方法。对我来说唯一的问题是它使用 K&R 格式,所以我为此制作了自己的代码片段文件。
也许您也注意到了,如果您的脚本中已经定义了一些 Unity 方法,则 IntelliSense 会检测到它们。
归档时间: |
|
查看次数: |
24793 次 |
最近记录: |