VSCode调试Unity脚本必须同时满足三个硬性条件:Unity生成有效.csproj文件、VSCode识别为Unity项目、Unity编辑器运行在Debug Mode;缺一不可且顺序不能颠倒,否则UnityEngine报红、跳转失效或断点不触发。
VSCode 能调试 Unity 脚本,但必须同时满足三个硬性条件:Unity 生成了有效的 .csproj 文件、VSCode 正确识别为 Unity 项目(而非普通 .NET 项目)、Unity 编辑器运行在 Debug Mode。缺一不可,且顺序不能错。
根本不是插件没装全,而是 VSCode 没加载到任何项目定义 —— 它连 UnityEngine.dll 在哪都不知道。
.csproj;双击脚本打开 VSCode ≠ 项目已加载Assets → Open C# Project(菜单栏操作,非右键)Edit → Preferences → External Tools → Generate .csproj files for Unity projects 已勾选,否则该操作静默失败Assembly-CSharp.csproj 和 YourProjectName.sln;没有就重试.vscode/、.sln、.csproj、obj/、bin/,重启 Unity 再执行一次 Open C# Project
Unity 编辑器默认以 Release Mode 运行,剥离所有调试符号,VSCode 根本无法注入调试信息 —— 这是 90% 断点失效的真正原因。
Debug),点击使其高亮变蓝Debug Mode,而不是 Release Mode
Edit → Preferences → External Tools → Editor Attaching 在新版本中已弃用,别再依赖它旧版 C# 扩展(ms-dotnettools.csharp)和 C# Dev Kit(ms-dotnettools.csdevkit)会抢 OmniSharp 控制权,导致类型提示全丢。
C# 扩展,只保留 C# Dev Kit 和官方 Unity 扩展(发布者是 Unity Technologies)omnisharp.path —— 填了反而强制走 dotnet,加载失败omnisharp.useGlobalMono 设为 always(macOS/Linux)或留空(Windows 自动探测)C# (Unity) 或 .NET SDK: 6.0.x / 8.0.x(取决于 Unity 版本)C# (LSP) 或 OmniSharp: Starting... 卡住,说明项目未加载或 SDK 版本不匹配真机调试不是“把本地配置复制过去”就行,端口绑定和网络可达性是关键瓶颈。
Mono 脚本后端(IL2CPP 不支持托管调试);构建时勾选 Development Build + Script Debugging
Listening for debugger on 127.0.0.1:56000,必须用 adb forward tcp:56000 tcp:56000 转发,不能直连 IPiproxy 56000 56000 命令转发 USB 端口,且 launch.json 中 endPoint 必须写 127.0.0.1:56000
最容易被忽略的是:Open C# Project 和 Debug Mode 必须都生效,且先后顺序不能颠倒。很多人反复重装插件、改 launch.json,其实只是没点那个虫子图标,或者没手动触发项目文件生成。