<p>VS Code 能跑 Unity C# 项目的关键在于 .NET SDK 版本、Unity Editor 配置和 C# 插件三者严格对齐:需按 Unity 版本选择匹配的 .NET SDK(如 2022.3 LTS 对应 .NET 6.0),仅安装 Microsoft 官方 C# 插件、Debugger for Unity 和 Unity Tools 三个必要扩展,并在 Unity 中设置 External Script Editor 后点击 Regenerate project files,同时启用 Script Debugging 才能实现智能提示、断点调试等完整功能。</p>

VS Code 能跑 Unity C# 项目,但不是装个插件就完事——关键在 .NET SDK 版本、Unity Editor 配置和 C# 插件三者对齐。错一个,智能提示失效、断点不命中、项目加载失败都是常态。
装对 .NET SDK:别瞎选最新版
OmniSharp(VS Code 的 C# 语言服务器)必须用匹配的 .NET SDK 启动并解析 Unity 项目。Unity 2022.3 LTS 默认用 .NET 6.0 运行时,Unity 2021 LTS 多数用 .NET Standard 2.1,对应 .NET 5.0 或 .NET 6.0 SDK;Unity 2019 LTS 及更早版本仍依赖 .NET Framework,此时应装 .NET 4.7.2 或 .NET 4.8 SDK(注意:不是 .NET Core 或 .NET 5+)。
验证方式:打开 Unity → Edit > Project Settings > Player → 展开 Other Settings → 查看 Api Compatibility Level:
-
.NET Standard 2.1→ 装.NET 6.0 SDK -
.NET Framework→ 装.NET 4.8 SDK(Windows)或dotnet-sdk-4.8(macOS/Linux via dotnet-install) - 装完后终端运行
dotnet --list-sdks确认已识别
VS Code 插件只装这仨,别贪多
官方 C# 插件(ms-dotnettools.csharp)是核心,它自带 OmniSharp,但依赖本地 .NET SDK。其他插件要么冗余,要么与 Unity 项目结构冲突。
必须装:
-
C#(Microsoft 官方,v2.x+)——提供基础补全、跳转、错误检查 -
Debugger for Unity(Unity 官方)——让 VS Code 能连接 Unity Editor 的调试器,支持断点、变量监视、调用栈 -
Unity Tools(Unity 官方)——提供 Unity API Snippets、Debug.Log快速模板、场景/组件快速导航
别装 Unity Code Pro 或 DotRush:它们绕过 OmniSharp,自己实现语义分析,在 Unity 2022+ 上常因项目文件生成规则变化而失效,且与 C# 插件冲突导致 Omnisharp server failed to launch 错误。
Unity Editor 里必须做两件事
VS Code 不是自动“认出” Unity 项目的。必须让 Unity 主动把工程元数据喂给 VS Code。
步骤:
- Unity 中打开
Edit > Preferences > External Tools(macOS 是Unity > Preferences) -
External Script Editor选你装好的 VS Code(路径一般为/Applications/Visual Studio Code.app或C:\Users\XXX\AppData\Local\Programs\Microsoft VS Code\Code.exe) - 点
Regenerate project files按钮 —— 这会强制 Unity 重新生成.csproj和.sln文件,并注入 Unity API 引用路径 - 重启 VS Code,等右下角状态栏出现
OmniSharp: Ready(不是Starting...或Failed)
常见卡点:Regenerate project files 按了没反应?检查 Unity 是否处于 Play Mode;点了但 VS Code 仍无提示?删掉项目根目录下的 Library 和 obj 文件夹再试一次。
调试连不上?检查端口和构建设置
Debugger for Unity 默认监听 localhost:50000,但 Unity Editor 必须主动连接这个端口。如果断点灰掉、控制台报 Unable to connect to Unity player,大概率是以下原因:
- Unity 中未启用
Script Debugging:菜单Edit > Project Settings > Editor→ 勾选Script Debugging - Unity 构建目标设为
Standalone或Editor,不能是WebGL或Android(真机调试需额外配置 ADB 和Unity Remote) - VS Code 的
launch.json配置错误:确保type是unity,request是attach,且port与 Unity 日志中显示的一致(启动 Unity 后看 Console 窗口第一行是否含Debug port:)
第一次调试前,先在 Unity 中点一下 Play 按钮(哪怕只是空场景),让调试器真正激活;否则 VS Code 会一直等待连接,超时后自动断开。
最常被忽略的是:Unity 生成的 .csproj 文件里引用了 UnityEngine.dll 等程序集,但 OmniSharp 默认只扫描标准 NuGet 包。只有 Regenerate project files 成功执行,且 .NET SDK 版本匹配,这些引用才会被正确加载——否则所有 Unity 类型都标红,GameObject 找不到,Debug.Log 报错。这不是插件问题,是底层工具链没对齐。


















