Sublime Text 3 要实现 Unity C# 代码提示,必须确保 OmniSharp 成功加载 UnityEngine.dll 等核心程序集并运行在匹配的 .NET 运行时上;路径需精确到 Managed 目录,.csproj 必须由 Unity 正确生成且包含有效引用,否则补全、跳转均失效。

Sublime Text 3 能提供 Unity C# 的代码提示,但前提是 OmniSharp 成功加载了 UnityEngine.dll 等核心程序集,并且运行在匹配的 .NET 运行时上——否则 Ctrl+Space 什么都不会弹出来。
OmniSharp 启动后没补全?先查 omnisharp.log 里有没有 Could not load file or assembly 'UnityEngine'
这是最典型的失败信号。OmniSharp 不是靠“猜”来理解 Unity 类型的,它必须实际加载 UnityEngine.dll 才能构建符号索引。路径错一级、Mono/.NET 版本不兼容、DLL 文件本身缺失(比如旧版 Unity 把它放在 Managed/UnityEngine/ 子目录),都会导致这条错误。
- Windows 用户:检查
OmniSharp.sublime-settings中"use_global_mono"是否设为"auto"或明确指向已安装的 Mono;若用 .NET SDK,需手动设置"omnisharp_server_path"指向OmniSharp.exe - macOS/Linux 用户:必须装对应 Unity Scripting Runtime Version 的 .NET SDK(不是 runtime),执行
dotnet --list-sdks确认版本存在,例如 Unity 2021.3.30f1 对应.NET 5.0,而 Unity 2022.3.20f1 要求.NET 6.0 - DLL 路径必须精确到
Managed目录层级:C:\Program Files\Unity\Hub\Editor\2021.3.30f1\Editor\Data\Managed\(Windows)或~/Unity/Hub/Editor/2021.3.30f1/Editor/Data/Managed/(macOS),不能只填到Data,也不能漏掉末尾Managed
Ctrl+Click 跳转不到 Input 或 Transform?确认 .csproj 是 Unity 主动生成的
Sublime 自身不解析项目结构,OmniSharp 完全依赖 .csproj 文件里的 <reference></reference> 和 <compile></compile> 节点来知道“哪些脚本属于本项目”“引用了哪些 DLL”。双击脚本打开 Sublime 是无效的,它不会触发工程同步。
- 必须在 Unity 编辑器中执行
Assets → Open C# Project(不是右键 Open with…),这会强制重写所有.csproj和.sln - 检查
.csproj文件是否包含类似<reference include="UnityEngine"><hintpath>...UnityEngine.dll</hintpath></reference>的条目,且HintPath指向你配置的 Managed 目录 - Unity Preferences → External Tools → External Script Editor 必须设为 Sublime,并勾选
Generate all .csproj files,否则新增脚本不会被纳入工程
补全有但不准,比如 transform.position. 只列出 x 却没有 y、z?检查 source.cs 作用域是否生效
Sublime 的语法高亮和补全行为受当前文件的 scope 控制。如果打开的 .cs 文件左下角显示的是 Plain Text 或 C++,OmniSharp 根本不会介入。
- 手动设置:右下角点击语言名 →
Open all with current extension as...→ 选C# - 确保
selector在 Build System 和 OmniSharp 配置中一致,例如"selector": "source.cs" - 部分 Unity 插件(如旧版 SublimeCodeIntel)会干扰 OmniSharp,建议禁用非必要 C# 相关插件,只留 OmniSharp 和 Package Control
真正卡住人的地方往往不是“怎么配”,而是“配完没反应时该看哪一行日志”。omnisharp.log 默认在 Sublime 的 Packages/User/OmniSharp/ 目录下,第一眼就盯住 Could not load 和 Failed to resolve assembly 这两类报错——它们比任何教程都诚实。


















