最近的 Unity MCP 能力更新后可以 runtime 执行代码,可以 get console logs,Agent 突然有手有眼强了不少。
用过 Unity 的都知道,如果在 runtime 的时候刚好调好了一套 components 参数,这时候退出 playing 模式,这些参数是不会被保存下来的,如果只有一个 component 还好办,我可以右键去复制它的参数;但如果遇到一整套 components,甚至跨 GameObject 的分散参数,这就很难搞了。
以往应对这种情况是写 ScriptableObject,这样就可以在运行时保存参数。但实际上不可能给所有的参数都预先加上 ScriptableObject,这么做很繁琐且会多出一些文件来做持久化。
所以我常用截图来解决,把所有相关的 Component 参数截图下来,退出编辑模式后再一个个调回去。如果涉及到 Prefab 的话会更麻烦,还要花费精力定位到 prefab,没法一站式完成。
但现在有一种最接近第一性原则的做法,就是直接在 Runtime 的时候告诉 Agent:记录 xx GameObject 的所有 Component 参数。这些数据不需要变成文件,直接存在于对话里就好了。接着退出运行模式,再告诉 agent 把对话中的参数应用回去,甚至可以挑选部分数据还原。
整个过程零侵入,无需新增脚本无需产生持久化文件无需学习新交互,而且修改前后数据还能在 Agent 对话回溯,Agent + Unity MCP 完美解决了这个使用场景。
这几天我改用 Unity 官方 MCP 体验良好,一是之前 coplay 的 MCP 在 Mac 老崩,二是官方 MCP 不需要手动开启且没有额外 bridge 窗口,这点我太需要了。