> ## 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.

# 代码执行与编译

> Agent 在编辑器内直接执行 C#，配合重编译等待与独立进程的编译服务器

## 在编辑器里执行 C\#

连接 Unity 后，Agent 可以直接在编辑器进程内执行 C# 代码：查询场景对象与组件属性、修改序列化字段、调用编辑器 API、批量处理资产。这类操作在会话中显示为「执行 Unity 命令」等工具调用，与文件修改一样受[权限控制](/sessions/permissions)约束。

这让很多任务不再需要"生成脚本、手动放进项目、点菜单执行、再删掉"的绕行：Agent 想知道场景里有多少个带某组件的对象，直接查询即可；想验证一段逻辑的实际行为，执行一次就有结果。

## 重编译与域重载

修改项目中的脚本文件后，Unity 需要重新编译脚本并执行域重载（domain reload）才能让改动生效。Locus 会在改完代码后主动请求重编译，并等待整个过程结束，期间状态指示显示`Unity 重编译中，等待重连`。

从使用者角度，关于域重载只需要知道一件事：它会重置脚本的内存状态，静态变量回到初始值，编辑器短暂无响应属于正常现象。Locus 会自动等到重载完成、连接恢复后再继续任务，不需要手动切回 Unity 确认（后台等待的加速机制见[运行时状态与后台运行](/unity/runtime-state)）。

## 为什么这条链路重要

真实的 Unity 任务很少止步于"把文件改对"。一次改动要真正落地，通常要走完一条链：修改脚本或资源，让 Unity 感知这些变化，等待编译或域重载完成，回到编辑器验证行为。

Locus 把这条链作为一个整体执行。Agent 改完代码后能立刻拿到编译结果：编译报错会直接回到会话里驱动下一轮修复，编译通过则继续在编辑器里执行验证。"改了但没编译"或"编译失败没人发现"这类断点被消除了，你看到任务完成时，改动已经在编辑器里生效过。

## 编译服务器

Agent 执行的代码片段（以及 View 脚本）需要先编译。默认情况下，这些编译在一个独立进程的编译服务器中完成，而不占用 Unity 编辑器进程：

* **编译更快**：使用现代编译器工具链，不受编辑器负载影响。
* **Play Mode 不掉帧**：运行游戏时执行代码，编辑器不会因编译卡顿。
* **错误直接返回**：编译错误无需经过 Unity 即可回到会话。

编译服务器只负责 Agent 的代码片段；项目脚本的重编译仍由 Unity 自身完成。

开关位于「设置」→「热更新与编译」→ `使用 CoreCLR sidecar 编译`，默认开启。编译服务器出现任何故障都会自动回退到 Unity 内编译，不会中断任务；若怀疑它引起问题，也可以手动关闭此开关，回退到编辑器内编译。[热更新](/unity/hot-reload)依赖此开关。

面板中`编译器`一行显示其状态：`运行中`、`空闲`、`回退 Unity 内置`或`未启用`。
