<p>VSCode调试Unity脚本断点不命中,90%因三环节未对齐:Unity未生成有效.csproj文件、VSCode未识别为Unity项目、Unity编辑器未启用Debug Mode;须手动执行Assets→Open C# Project、右下角切Debug模式、确保状态栏显示C# (Unity)。</p>

VSCode 调试 Unity 脚本断点不命中,90% 是因为三个环节没对齐:Unity 没生成有效的 .csproj 文件、VSCode 没识别成 Unity 项目、Unity 编辑器本身没开 Debug Mode。不是插件装得不够多,而是协作链路断在了具体位置。
必须手动触发 Open C# Project 生成项目文件
Unity 不会自动为你生成或刷新 .csproj 和 .sln,双击脚本打开 VSCode ≠ 项目已加载。VSCode 的 C# Dev Kit 只读取这些文件里的引用路径,没有它们,UnityEngine 就是红色的,跳转全失效。
- 先确认 Unity 编辑器中
Edit → Preferences → External Tools已勾选Generate .csproj files for Unity projects(尤其要展开子项,确保Unity C# Projects也被勾选) - 然后在菜单栏点击
Assets → Open C# Project—— 这是唯一可靠触发完整项目生成的操作 - 成功后,项目根目录应出现
Assembly-CSharp.csproj和YourProjectName.sln;没有就说明失败,删掉.vscode/、.sln、.csproj、obj/、bin/后重试
VSCode 必须显示 C# (Unity) 模式
右下角状态栏显示 C# (LSP) 或 .NET SDK: x.x.x 是错的,说明语言服务器正在用标准 .NET SDK 解析,完全不认识 Library/ScriptAssemblies/UnityEngine.dll。Unity 的 API 不来自 NuGet,而来自编辑器内置 DLL。
- 卸载旧版
C#扩展(ms-dotnettools.csharp),只保留C# Dev Kit(ms-dotnettools.csdevkit)和Unity Tools - 重启 VSCode,打开任意
.cs文件,右下角必须显示C# (Unity)或OmniSharp: Ready (Mono) - 若仍显示
C# (LSP),检查omnisharp.path是否被手动填过值——清空它;omnisharp.useGlobalMono在 Windows 上建议设为always并指向 Mono 安装路径
Unity 编辑器右下角必须切到 Debug Mode
Unity 默认以 Release Mode 运行 Play 模式,剥离所有调试符号(PDB),VSCode 根本无法附加。这不是 VSCode 配置问题,是 Unity 主动拒绝调试。
- 看 Unity 编辑器右下角状态栏,找到虫子图标(?),点击使其高亮变蓝
- 弹出窗口中必须显示
Debug Mode,而不是Release Mode - 该模式只影响编辑器内 Play,不影响构建包性能;调试完可手动切回 Release Mode 提升响应速度
- 别再找
Editor Attaching选项——新版本 Unity 已弃用它
launch.json 必须由 Unity 自动创建
手写或复制粘贴的 launch.json 极易出错,尤其是 processId 和 pipeTransport 配置。VSCode 的 Unity 调试上下文必须由 Unity 编辑器注入,否则会报 No Unity process found。
- 关闭所有 VSCode 窗口
- 在 Unity 中双击任意
.cs脚本(确保Edit → Preferences → External Tools → External Script Editor已设为 VSCode) - VSCode 启动后会自动生成正确的
.vscode/launch.json,类型为attach,且含pipeTransport字段 - 已有旧配置?直接删掉
.vscode/目录再重试,避免残留干扰
最常被忽略的其实是“顺序”:先让 Unity 生成项目文件,再让 VSCode 加载它,最后才启动调试。中间跳过任何一步,断点都只是红色圆点,不会变成实心红点,也不会有调用栈和变量面板。调试器连不上,从来不是 VSCode 的问题,而是你没告诉 Unity “我要调试你”。



















