> ## Documentation Index
> Fetch the complete documentation index at: https://unity.farlocus.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 代码分析

> C# 语言服务与代码工具的开关配置

「设置 → 代码分析」控制 Agent 的 C# 语义分析能力。开启后，Agent 查找引用、跳转定义时得到的是编译器级别的准确结果，而不是文本搜索的近似匹配。

## C# 代码分析总开关

基于 Roslyn 语言服务的 C# 语义分析：组件按需下载，并加载 Unity 生成的解决方案。所有 `code_*` 工具都依赖此开关。

开关旁实时显示服务状态：`准备组件中` → `下载组件` → `调用 Unity 生成工程文件中` → `启动分析服务中` → `加载项目中` → `代码分析就绪`；出错时显示具体错误信息。分析结果异常或项目结构大改后，可点击`重启`重启分析服务并重新加载项目。会话页输入框上方的 `C# 代码分析`状态指示同样能查看状态并重启。

## 简单原理

Unity 项目的 C# 代码里，同名方法、字段随处可见，纯文本搜索无法区分 `Player.Reset()` 与 `Enemy.Reset()`。语言服务把整个解决方案真正编译一遍，理解每个符号的类型与归属，因此 Agent 能拿到语义级精确的引用列表和签名信息，改代码前后也能立即得到编译器诊断，减少凭记忆猜 API 造成的错误。代价是首次启动需要下载组件并加载项目，大项目加载需要一些时间。

## Roslyn 工具

逐项开关，关闭的工具会从 Agent 的工具列表中完全移除。总开关关闭时，以下工具无论开关状态如何都不会提供给 Agent：

* **`code_symbol_search`**：在整个工作区内搜索 C# 符号（类、方法、字段）。
* **`code_goto_definition`**：解析符号的声明位置，包括其他程序集与 package。
* **`code_find_references`**：语义级精确查找符号的全部代码引用。
* **`edit/write 诊断`**：Agent 修改 Unity C# 文件后，自动返回有上限的文件级错误、警告与项目字符串引用检查，构成"改完即验证"的回路。
* **`code_diagnostics`**：不切到 Unity 即可获取编译器与分析器的错误和警告；file 模式同时校验 tag、layer、场景、Resources、Input 字符串是否存在于项目配置。
* **`code_hover`**：查询符号的精确签名、类型与文档（IDE 悬停信息），避免 Agent 凭记忆猜 API。
* **`Unity 分析器（UNT*）`**：注入 Microsoft.Unity.Analyzers，为 `code_diagnostics` 提供 Unity 特化诊断，并压制对 Unity 代码具有误导性的通用 C# 提示。切换后会自动重启分析服务。

## 资产侧工具

把 C# 符号桥接到 Unity 资产数据与项目配置，不依赖 Roslyn 服务：

* **`unity_code_usages`**：查询脚本或成员在场景、预制体、资产中的序列化使用，包括挂载点、UnityEvent 绑定、序列化字段与 AnimationEvent。代码侧的"查找引用"看不到这些资产里的使用点，删改脚本前让 Agent 先查一遍，可以避免破坏场景中的绑定。该工具依赖资产数据库，见[资产页面](/assets/index)。

同属`代码与 Unity` 分组的`热更新与编译`、`Unity 连接`、`测试`标签，见 [Unity 执行与编译](/unity/execute-and-compile)与[热更新](/unity/hot-reload)。
