M1 Mac中VS Code适配Unity自动补全失效、运行异常问题
M1芯片Mac设备VS Code适配Unity 2021.3 LTS故障修复
问题基础信息
- 运行环境:搭载M1芯片的MacBook Air,已安装VS Code、Unity 2021.3.4.f1 Silicon LTS版本,且已在Unity外部工具设置中完成VS Code关联配置
- 已预装依赖:homebrew、wget、.net core、Mono稳定通道版本、Mono Visual Studio通道版本、相关SDK依赖
- VS Code已装插件:官方C#扩展、Kleber Silva出品的Unity code snippets、Ycleptic Studios出品的Unity snippets
- 已尝试的无效排查操作:
- 因VS Code设置界面未找到OmniSharp Global mono选项,手动在
settings.json文件中添加配置项"omnisharp.useGlobalMono": "always",多次重启设备仍未解决问题 - 已勾选Unity设置中所有Generate .csproj files相关选项
- 因VS Code设置界面未找到OmniSharp Global mono选项,手动在
- 现存故障:
- VS Code编辑Unity代码无自动补全提示
- 编写
Console.Write("hello world")类测试代码时仅能在终端运行,无法通过VS Code直接启动运行
修复步骤
一、解决Unity代码无自动补全问题
该问题核心原因是新版本C#扩展默认启用Modern .NET模式,与Unity 2021 LTS内置的Mono编译环境不兼容,且旧版useGlobalMono配置项已在高版本扩展中废弃,手动添加不会生效。
- 完全退出VS Code与Unity,删除本地C#扩展缓存:打开访达按
Command+Shift+G,输入路径~/.vscode/extensions/,找到前缀为ms-dotnettools.csharp的文件夹全部删除。 - 重新打开VS Code安装C#扩展,选择1.25.0版本安装,该版本对M1架构、Unity 2021 LTS的适配稳定性最高,不要安装最新版。
- 打开VS Code的用户配置
settings.json,删除之前添加的"omnisharp.useGlobalMono": "always"配置,新增以下适配配置:
{ "omnisharp.useModernNet": false, "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current", "omnisharp.sdkPath": "/usr/local/share/dotnet/sdk", "omnisharp.projectLoadTimeout": 60, "omnisharp.autoStart": true }
- 打开对应Unity项目,删除项目根目录下的
Library、Temp、obj文件夹,以及所有.csproj、.sln后缀的文件。 - 进入Unity的外部工具设置页,先取消所有Generate .csproj files的选项勾选,点击应用,再重新全部勾选,点击
Regenerate project files按钮等待生成完成。 - 右键项目内任意C#脚本选择Open C# Project,等待VS Code左下角OmniSharp加载进度条走完,无红色报错提示时,代码自动补全即可正常工作。
二、解决VS Code无法直接启动运行代码问题
该问题是因为默认生成的调试配置未匹配M1芯片下的.NET路径,且未区分Unity附加调试与独立脚本运行场景:
- 在VS Code中打开对应工作区,切换到运行和调试面板,点击创建
launch.json文件,选择C#环境。 - 将自动生成的配置内容替换为以下适配配置:
{ "version": "0.2.0", "configurations": [ { "name": "附加到Unity编辑器", "type": "mono", "request": "attach", "address": "localhost", "port": 55555 }, { "name": "运行独立C#脚本", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "${workspaceFolder}/bin/Debug/net6.0/${fileBasenameNoExtension}.dll", "args": [], "cwd": "${workspaceFolder}", "console": "integratedTerminal", "stopAtEntry": false } ] }
- 打开VS Code集成终端,在独立脚本存放的工作区根目录执行命令
dotnet new console -f net6.0,生成基础控制台项目配置文件。 - 后续运行独立测试代码时,在调试面板选择「运行独立C#脚本」配置,即可直接在VS Code内启动运行;调试Unity代码时选择「附加到Unity编辑器」配置,保持Unity编辑器运行状态即可实现断点调试。
注意:M1架构下不要安装任何第三方OmniSharp替代插件,此类插件会篡改Mono路径配置,反而导致OmniSharp加载失败。
内容的提问来源于stack exchange,提问作者Alvaro
相关产品推荐
相关产品推荐

