
ET 框架的 Cursor 编辑器集成com.unity.ide.cursor 包安装、源码原理与版本演进全解析【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ET在 ETUnity3D Client And C# Server Framework项目中com.unity.ide.cursor 包把 Cursor 深度接入 Unity 编辑器自动发现 Cursor 安装、生成 csproj/sln 工程文件、写出一套可调试的.vscode工作区配置并附带面向 ET 的 AI 开发规范规则文件。读完本文你将掌握该包的安装步骤与插件版本搭配、Cursor 安装发现与脚本打开的实现原理、工程文件与工作区配置的生成细节以及从 CHANGELOG.md 梳理出的版本演进脉络从而在 ET 项目中正确使用 Cursor 完成编码、智能提示与调试。一、包定位从 Visual Studio 编辑器包到 Cursor 适配com.unity.ide.cursor是 Unity 官方com.unity.ide.visualstudioCode Editor Package for Visual Studio的 Cursor 适配分支。从 package.json 可以看到它的完整元信息字段值说明namecom.unity.ide.cursor包名displayNameCursor Editor包显示名version2.0.24当前仓库中的包版本unity/unityRelease2019.4/25f1兼容的 Unity 编辑器版本下限dependenciescom.unity.test-framework: 1.1.9测试框架依赖包的description明确点出了其核心职责为 Unity 提供 Cursor 作为代码编辑器的集成支持包含为智能提示intellisense生成 csproj 文件、自动发现安装位置等功能。它的内部_upm.changelog只有一句话Integration: Add support for Cursor——即在官方包基础上增加了 Cursor 支持。包的 README.md 进一步说明了相对官方版的差异与 ET 框架适配内容适配了ET.sln解决方案添加了 ET 框架的 rule 参考etrules.mdc建议手动扩展 rule 内容并复制到 Cursor 的默认 Rule 中。需要说明的是该包面向的是把 Cursor 当作 Unity 外部脚本编辑器的场景而不是 Cursor 的 AI 对话功能本身——AI 规范是通过规则文件见下文间接发挥作用的。二、安装与插件版本搭配2.1 通过 Package Manager 安装根据 README.md 的说明安装步骤如下打开 UnityWindow → Package Manager点击左上角的按钮选择Add package from git URL粘贴该包对应的 Git 仓库地址地址以com.unity.ide.cursor-et.git结尾具体 URL 见 README.md点击Add完成安装。安装完成后在Edit → Preferences → External Tools → External Script Editor中选择Cursor作为外部脚本编辑器对应官方文档 using-visual-studio-editor.md 中的操作路径窗口会刷新并展示控制 csproj 生成的相关选项。2.2 Cursor 侧插件版本建议README.md 对 Cursor 内的插件版本给出了明确的搭配建议这是 ET 项目下保证调试与智能提示正常工作的关键插件推荐版本说明C# Dev Kitv1.18.23禁止自动更新C#官方语言服务v2.72.27禁止自动更新UnityVisual Studio Tools for Unityvstuc最新版即可无版本锁定要求之所以强调禁止自动更新是因为 C# Dev Kit / C# 语言服务的大版本升级往往伴随配置格式与调试协议的变化可能与 launch.json 中生成的vstuc调试配置不兼容。2.3 工程文件生成选项工程文件csproj的生成策略在 using-visual-studio-editor.md 中有完整表格点击Regenerate project files后 Unity 会根据勾选更新已有 csproj 并新建缺失项属性说明Embedded packages项目Packages目录下的内嵌包默认启用Local packages从本机仓库安装但位于 Unity 项目之外的本地包默认启用Registry packages从官方或自定义 Registry 安装的包Git packages通过 Git URL 安装的包Built-in packagesUnity 默认自带的包Tarball packages从本机 GZip 压缩包安装的包Unknown packages无法判断来源的包Player projects为每个 Player 工程额外生成原工程名.Player.csproj便于程序集定义与测试套件接入编辑器对 ET 项目而言仓库中大量cn.etetet.*包以 Git 包 / 本地包形式存在参见 Packages/manifest.json因此Git packages与Local packages两个选项需要保持开启否则这些包的代码不会被纳入智能提示范围。三、Cursor 安装自动发现机制源码级该包的核心能力之一是自动发现 Cursor 安装位置。入口在 Editor/Discovery.csGetVisualStudioInstallations()依次枚举VisualStudioCursorInstallation与VisualStudioCodiumInstallation分别对应 Cursor 与 Codium/Code OSS 系TryDiscoverInstallation()则按顺序尝试两类安装。具体发现逻辑位于 Editor/VisualStudioCursorInstallation.cs3.1 平台候选路径与匹配规则GetVisualStudioInstallations()按平台枚举候选路径IsCandidateForDiscovery()负责校验Windows检查%LOCALAPPDATA%\Programs\cursor\cursor.exe与ProgramFiles下的cursor\cursor.exe匹配规则为文件名符合.*Cursor.*\.exe$macOS枚举/ApplicationsProgramFiles目录下匹配Cursor*.app的目录规则为.*Cursor.*\.app$Linux检查/usr/bin/cursor、/bin/cursor、/usr/local/bin/cursor三个常见位置并额外解析XDG_DATA_DIRS环境变量指向的applications/code.desktop文件通过正则Exec(\S)提取可执行文件路径该特性正是 CHANGELOG.md 2.0.22 中 Add support for XDG_DATA_DIRS and .desktop files on Linux 的实现。3.2 版本探测TryDiscoverInstallation()会读取可执行文件旁resources/app/package.json中的version字段来获取 Cursor 版本号并据此判断是否为 Insider预发布版本——版本名包含insider或路径包含insider均会被标记。随后构造一个VisualStudioCursorInstallation实例名称形如Cursor [版本号]。从源码可以看到该安装类型的关键能力配置为SupportsAnalyzers返回true支持 Roslyn 分析器LatestLanguageVersionSupported返回11.0支持 C# 11工程生成器为SdkStyleProjectGenerationSDK-Style 工程生成。3.3 打开脚本时的窗口复用Open()方法在 Unity 中双击脚本触发打开时会先通过FindRunningCursorWithSolution()按进程工作区workspace路径查找已打开当前解决方案的 Cursor 实例若存在则使用--reuse-window -g {path}:{line}:{column}在既有窗口中定位到指定文件行列否则使用--new-window打开新窗口。macOS 下会通过系统的open -n包装执行。四、工程文件生成csproj 与解决方案4.1 SDK-Style 工程生成从 CHANGELOG.md 与源码可以还原出工程生成侧的演进主线2.0.20新增 Sdk Style 工程生成支持2.0.21目标框架从netstandard2.0提升为netstandard2.12.0.22将引用的程序集标记为 private构建时不向输出目录拷贝多余文件、为 SDK-Style 工程增加 Unity capability、防止 SDK-Style 工程出现循环依赖错误。工程生成器对应 Editor/ProjectGeneration/SdkStyleProjectGeneration.cs 与 Editor/ProjectGeneration/ProjectGeneration.cs此外还有LegacyStyleProjectGeneration.cs兼容旧式工程。生成结果即 ET 根目录下的ET.sln及各 csproj 工程文件。4.2 分析器与语言版本2.0.18为分析器analyzers与源代码生成器source generators增加额外编译选项2.0.17从响应文件response files中引入分析器更新受支持的 C# 版本2.0.13修复外部包场景下生成工程中分析器路径错误、选择性生成时 Analyzer/LangVersion 节点缺失的问题2.0.11分析器与 ruleset 使用绝对路径2.0.4支持内嵌的 Roslyn 分析器 DLL 与 ruleset 文件2.0.3增加 C# 8 支持并新增UnityProjectGeneratorVersion属性。结合 3.2 节的源码可知Cursor 安装类型声明最高支持 C# 11LatestLanguageVersionSupported分析器则来自visualstudiotoolsforunity.vstuc扩展目录GetAnalyzers()会去~/.vscode/extensions/visualstudiotoolsforunity.vstuc*下检索。五、.vscode 工作区文件自动生成当选中 Cursor 作为外部编辑器后CreateExtraFiles()会在项目根目录创建.vscode目录并生成/修补三个 JSON 配置文件。这是理解包究竟帮我们做了什么的关键。5.1 settings.json文件排除与默认解决方案首次生成时写入完整的files.exclude规则屏蔽.git、.vs、Library/、Temp/、obj/、各类美术资源扩展名png/psd/fbx/unity/prefab/meta 等等 Unity 工程噪音同时写入dotnet.defaultSolution指向生成的解决方案文件名即ET.sln。若文件已存在PatchSettingsFile()只做最小修补移除对根目录*.sln/*.csproj的排除项并校正dotnet.defaultSolution。5.2 launch.json一键附加调试 Unity默认内容为{ version: 0.2.0, configurations: [ { name: Attach to Unity, type: vstuc, request: attach } ] }若已有launch.json且未包含type为vstuc的配置PatchLaunchFile()会将其合并进去。这正是 CHANGELOG.md 2.0.21 中 Add vstuc launch configuration to launch.json 的落地实现。5.3 extensions.json推荐 Unity 扩展生成内容为{ recommendations: [ visualstudiotoolsforunity.vstuc ] }打开项目时 Cursor 会提示安装 Visual Studio Tools for Unity 扩展即 README 中提到的 Unity 插件安装最新版即可。5.4 .vstupatchdisable阻止自动修补对应 CHANGELOG.md 2.0.21 的说明You can prevent the package from patching those configuration files by creating a.vscode/.vstupatchdisablefile。源码中CreateExtraFiles()首先检查.vscode下是否存在.vstupatchdisable存在时enablePatch为false三个文件只会按需新建、绝不覆盖修改已有配置——适合团队内已有统一.vscode配置、不希望被插件反复改写的情况。5.5 与旧 vscode 包的关系CHANGELOG.md 2.0.21 同时提到 Only disable the legacycom.unity.ide.vscodepackage going forward即只向前禁用旧的com.unity.ide.vscode包2.0.20 起该包即已 Add support for Visual Studio Code。因此若项目中同时存在旧 vscode 集成包新包会负责将其禁用避免两个集成互相冲突。六、ET 框架适配ET.sln 与 AI 开发规范规则该包在 ET 仓库中最具特色的部分是随包携带的 etrules.mdc 规则文件以及 README 明确说明的两点适配ET.sln 适配包按 Unity 的 SDK-Style 流程生成解决方案项目根目录的 ET.sln 即由该流程产出保证 Cursor 打开后能解析全部cn.etetet.*包与主工程代码rule 参考etrules.mdc是面向 AI 开发助手的 ET 框架完整开发规范README 建议手动扩展并复制到 Cursor 的默认 Rule 中使 Cursor 的 AI 代码生成严格遵循 ET 规范。etrules.mdc的内容覆盖了 ET 开发的全部关键规范摘要如下基础原则所有 AI 回复与代码注释必须使用中文严禁输出带假设 xxx 已完成占位符的不可执行代码ECS 架构Entity 只含数据、System 只含逻辑、Component 组合优于继承严格分离数据与业务逻辑包结构所有代码位于Packages/cn.etetet.*包命名cn.etetet.{功能模块名}四程序集分类Model共享模型层不可热更、ModelView客户端视图模型层不可热更、Hotfix共享逻辑层可热更、HotfixView客户端视图逻辑层可热更对应目录Scripts/Model/、Scripts/ModelView/、Scripts/Hotfix/、Scripts/HotfixView/Entity 规范必须继承Entity并实现IAwake等生命周期接口必须添加[ComponentOf]/[ChildOf]特性严禁在 Entity 中定义方法System 规范必须是静态partial类添加[EntitySystemOf(typeof(Entity类))]与[FriendOf]特性生命周期方法标注[EntitySystem]且为private static业务方法为静态扩展方法命名空间ET共享、ET.Client客户端、ET.Server服务器异步编程使用ETTask替代TaskYIUI 规范UI Entity 需实现IYIUIBind、IYIUIInitialize、IYIUIOpen、IYIUIClose等接口System 侧对应实现各生命周期扩展方法网络协议请求协议C2X_前缀、响应协议X2C_前缀、服务器间G2M_/M2G_等协议文件组织在cn.etetet.proto包内配置数据[Config]/[ConfigCategory]特性驱动的 Luban 配置类日志与错误处理Log.Debug/Info/Warning/Error分级使用、try-catch-finally 规范性能优化对象池ObjectPool.FetchT()与归还、避免装箱等AI 使用指南提供了推荐的 AI 提示词模板与代码审查检查清单Entity 是否继承 Entity 并实现 IAwake、System 是否为静态 partial 类、是否添加特性标签、是否实现生命周期方法等。对在 Cursor 中使用 AI 辅助开发的 ET 开发者来说把该文件并入 Cursor 的规则配置是让 AI 生成代码符合框架约束的最直接手段。七、版本演进要点从 CHANGELOG 看能力沉淀CHANGELOG.md 记录了从首个版本1.0.32019-01-01到 2.0.222023-10-03的完整历史仓库内实际版本为 2.0.24在 2.0.22 之上仅追加了 Add support for Cursor 的集成变更。按主题归纳如下主题关键版本内容编辑器集成与发现2.0.22Linux 下支持XDG_DATA_DIRS与.desktop文件发现改用编译期平台分支2.0.21只向前禁用旧com.unity.ide.vscode包修复非 UTF 代码页下的 JSON 解析问题2.0.20增加 Visual Studio Code 支持内部 API 重构2.0.9增加 CLI 支持发现 VS 安装时性能优化2.0.0改进 VS / VS for Mac 自动发现支持 VSTU 消息系统与解决方案 roundtrip工程生成2.0.22引用程序集标记 privateSDK-Style 工程增加 Unity capability防止循环依赖2.0.21目标框架升级到netstandard2.1写入dotnet.defaultSolution修补 launch.json / extensions.json.vstupatchdisable2.0.18 / 2.0.17分析器与源代码生成器编译选项响应文件分析器性能改进2.0.3C# 8 支持UnityProjectGeneratorVersionasmdef 根命名空间2.0.1 / 2.0.0C# 8 语言版本按 VS 安装自动设定TypeCache 加速选择性工程生成embedded/local/registry/git/builtin/player调试与测试2.0.7 / 2.0.6移除 newtonsoft-json 依赖、改用 JsonUtilityVS Test Runner 支持文档2.0.13新增含 ToC、使用指南与截图的完整文档即 Documentation~ 目录几点对 ET 开发者有实际意义的结论工程生成性能从 2.0.152.0.22 持续优化外部包保持目录结构、响应文件分析器等对包含上百个cn.etetet.*包的 ET 工程有明显收益**netstandard2.12.0.21**与 **C# 11 上限源码确认**意味着生成的 csproj 与现代语言特性对齐ET 服务端常用的Span、async等特性可获得完整智能提示**选择性生成2.0.1**与 ProjectGenerationFlag.cs 对应控制 2.3 节表格中的各类包是否生成 csproj。八、使用注意事项与故障排查Unity 版本下限package.json 声明兼容 Unity 2019.4 及以上更低版本需通过 Package Manager 手动安装。插件版本锁定C# Dev Kit 固定 v1.18.23、C# 固定 v2.72.27 并禁止自动更新升级前建议先在测试工程验证。配置被反复改写若团队.vscode配置被包自动修补在.vscode下创建空文件.vstupatchdisable即可完全关闭对 settings.json / launch.json / extensions.json 的修改但新建文件仍会生成。智能提示缺失确认 External Tools 中Git packages、Local packages等生成选项已勾选并在更改后点击Regenerate project files同时确认 Cursor 侧已安装visualstudiotoolsforunity.vstuc扩展包会自动写入extensions.json推荐。Linux 下发现不到 Cursor检查 Cursor 是否位于/usr/bin/cursor、/bin/cursor、/usr/local/bin/cursor或确认XDG_DATA_DIRS指向的目录下存在有效的.desktop文件。AI 生成代码不符合框架将 etrules.mdc 复制到 Cursor 默认 Rule 中并在提问时使用规则文件内提供的 ET 提示词模板。结语com.unity.ide.cursor的价值不在于多一个编辑器入口而在于把 Cursor 完整纳入 Unity ET 的开发闭环安装自动发现、SDK-Style 工程生成、vstuc附加调试、.vscode配置的生成与保护以及面向 ET 的 AI 规范规则文件共同构成了一套开箱即用的 Cursor 开发环境。结合 CHANGELOG.md 的版本脉络与 Editor/VisualStudioCursorInstallation.cs 等源码实现开发者既能按推荐版本一键配好环境也能在遇到异常时快速定位到对应机制是 ET 仓库中值得留意的编辑器基础设施。【免费下载链接】ETUnity3D Client And C# Server Framework项目地址: https://gitcode.com/GitHub_Trending/et/ET创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考