用途:当 uloop 现有检查或编辑工具不足以覆盖目标状态时,用 uloop execute-dynamic-code 在处于活动状态的 Unity Editor 中运行聚焦的 C# 代码片段。基础的对象查找或属性查看应先用 find-game-objects --search-mode selected。它适合检查可达的 Unity 状态(GameObject、组件、公共属性、静态值、方法结果),也适合直接修改状态、做一次性诊断或自动化场景、预制体和菜单操作。
主要能力:支持 EditMode 与 PlayMode,代码直接在编辑器执行上下文运行(Screen.width/height 是编辑器像素,不是 Game View 分辨率;Game View 中心射线可用 cam.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f)))。可通过反射写入私有字段,在 PlayMode 会话状态不对时直接修正状态而不改代码,不触发重编译和域重载,内存状态得以保留。片段不落地到源文件,不违反禁止反射的生产代码规则。它无法读取已运行方法内部的局部变量或中间计算;这类值应按 uloop-pause-point 技能用暂停点 CapturedVariables 获取,暂停期间可用 UloopPausePoint.TryGetCapturedValue(name) 拿到实时捕获引用。不要在片段中轮询或 sleep,代码体在主线程同步执行。
使用方式:必填参数 --code(内联 C# 语句,直接写语句,无类/命名空间/方法包装,return 可选,using 可放在片段顶部)或 CLI 专用 --code-file <path>,二者只能选一个,同时使用会报错。可选 --parameters 为 shell 引用的 JSON 对象字面量,值以 parameters["param0"] 等暴露,不要传 JSON 字符串值;--wait-for-domain-reload 用于会触发脚本重载或导入的片段;--yield-to-foreground-requests 允许前台请求抢占。zsh/bash 中用单引号包裹整段片段以保证 C# 双引号原样传递,例如 --code 'return "hi";';被 shell 破坏或使用 Windows/PowerShell 时可改用 --code-file,并参考 references/shell-quoting.md。遇到 CS8421、CS8820 或数值字面量相关类型错误(如 Color32 需要 (byte)255)时参考 references/transpiler-constraints.md。若需验证输入路径本身,应改用 simulate-mouse-ui 或 simulate-mouse-input;后者的 New Input System 不可用时可考虑本工具的变通方案。
输出:返回 JSON,含 Success、Result(return 值)、Logs(可用 get-logs 读 Unity Console 输出)、可选的 PartialResults(仅在异常前显式调用 UloopDynamicCodePartialResults.Set 保存的值,普通局部变量在异常展开后无法恢复)、CompilationErrors(Roslyn 诊断,含 Message、Line、Column、ErrorCode 及可选 Hint、Suggestions)、Error/ErrorMessage、UpdatedCode(实际编译的包装形式,便于调试 using 重排)、DiagnosticsSummary 与 Diagnostics。Success 为 false 时先看 CompilationErrors,为空则看 ErrorMessage(可能为运行时异常、取消或“执行进行中”拒绝)。Play Mode 运行且编辑器失焦时会返回 Warning,进度可能被节流,可用 uloop focus-window 或暂停点的 --await/--trigger 流程。
限制:仅支持直接语句;编辑器执行上下文与 Game View 分辨率不同;不能读取已运行方法内部局部变量;不使用暂停点无法读取中间计算值;失焦的 Play Mode 可能被节流。资料未提供收费、价格或平台等其它信息。