在编辑器里执行 C#
连接 Unity 后,Agent 可以直接在编辑器进程内执行 C# 代码:查询场景对象与组件属性、修改序列化字段、调用编辑器 API、批量处理资产。这类操作在会话中显示为「执行 Unity 命令」等工具调用,与文件修改一样受权限控制约束。 这让很多任务不再需要”生成脚本、手动放进项目、点菜单执行、再删掉”的绕行:Agent 想知道场景里有多少个带某组件的对象,直接查询即可;想验证一段逻辑的实际行为,执行一次就有结果。重编译与域重载
修改项目中的脚本文件后,Unity 需要重新编译脚本并执行域重载(domain reload)才能让改动生效。Locus 会在改完代码后主动请求重编译,并等待整个过程结束,期间状态指示显示Unity 重编译中,等待重连。
从使用者角度,关于域重载只需要知道一件事:它会重置脚本的内存状态,静态变量回到初始值,编辑器短暂无响应属于正常现象。Locus 会自动等到重载完成、连接恢复后再继续任务,不需要手动切回 Unity 确认(后台等待的加速机制见运行时状态与后台运行)。
为什么这条链路重要
真实的 Unity 任务很少止步于”把文件改对”。一次改动要真正落地,通常要走完一条链:修改脚本或资源,让 Unity 感知这些变化,等待编译或域重载完成,回到编辑器验证行为。 Locus 把这条链作为一个整体执行。Agent 改完代码后能立刻拿到编译结果:编译报错会直接回到会话里驱动下一轮修复,编译通过则继续在编辑器里执行验证。“改了但没编译”或”编译失败没人发现”这类断点被消除了,你看到任务完成时,改动已经在编辑器里生效过。编译服务器
Agent 执行的代码片段(以及 View 脚本)需要先编译。默认情况下,这些编译在一个独立进程的编译服务器中完成,而不占用 Unity 编辑器进程:- 编译更快:使用现代编译器工具链,不受编辑器负载影响。
- Play Mode 不掉帧:运行游戏时执行代码,编辑器不会因编译卡顿。
- 错误直接返回:编译错误无需经过 Unity 即可回到会话。
使用 CoreCLR sidecar 编译,默认开启。编译服务器出现任何故障都会自动回退到 Unity 内编译,不会中断任务;若怀疑它引起问题,也可以手动关闭此开关,回退到编辑器内编译。热更新依赖此开关。
面板中编译器一行显示其状态:运行中、空闲、回退 Unity 内置或未启用。