VS Code IntelliSense不适用于Unity3d

问题描述 投票:1回答:1

问题:IntelliSense不适用于Unity特定的方法和功能(即UpdateFixedUpdateAwake等。

但是,它对于非特定于Unity的方法(即IEnumeratorvoidpublicfloatint等)和特定于Unity的变量(即Gameobjecttransformcamera等)和特定于Unity的名称空间(即UnityEngineUnityEditorUnity等)。

我正在使用:Visual Studio Code 1.41,Unity 3d 2018.4.15f1(使用2019.2.x时,我有相同的问题。

我尝试了以下解决方案,但没有结果:

  1. 使用不同版本的.NET
  2. 项目中已删除的vscode文件。
  3. 已卸载并重新安装了Unity和Visual Studio。
  4. <TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>更改为<TargetFrameworkVersion>(Currently installed version)</TargetFrameworkVersion>,但单位默认自动恢复为v4.7.1

可能的问题:

  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
    

    由于某种原因,sln文件似乎用于Visual Studio2010。我不知道这是故意的还是问题的。

  2. 如上所述,尝试解决方案4时,Unity(或我所知的VS代码)会自动将.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

我该如何解决这个问题?我也在reddit和Unity论坛上都问过这个问题,但没有成功。

c# unity3d visual-studio-code
1个回答
0
投票

这不是解决您问题的方法,但是我认为这根本没有问题。不幸的是,到目前为止,我认为VS Code的IntelliSense不适用于Unity特定的方法和功能。

作为一种替代方法,您可以使用Unity code snippets extension,它将为IntelliSense带来一些方法。对我来说,唯一的问题是它使用了K&R格式,因此我为此设置了my own snippet file

也许您也注意到了,但是如果您的脚本中已经有一些已定义的Unity方法,则IntelliSense会检测到它们。

© www.soinside.com 2019 - 2024. All rights reserved.