调试:把“不能用”变成可复现的问题
当 AI 交付的功能不正常时,不要立刻要求“重写一版”。先缩小问题范围:代码没编译、组件没配置、规则错了、显示错了,还是平台行为不同?
按这条链检查
这是排查顺序,不是保证所有错误都只有一个原因。例如缺失资源可能同时来自导入设置和构建裁剪。
记录一次操作的关键字段
对合成操作,可以记录操作编号、当前状态、源格、目标格、前后等级、规则返回值、分数变化和视图对象。日志越贴近业务边界,越容易找到状态在哪里偏离。
不要每帧打印全部棋盘,也不要把登录凭据或用户隐私数据写进日志。必要时用开发开关、采样和有限长度日志。
常见现象与检查方向
| 现象 | 先检查 |
|---|---|
| 脚本挂不上 | 编译错误、文件名与类名、组件类型 |
| 点击无反应 | EventSystem、输入模块、遮挡、射线设置 |
| 拖拽偏移 | 坐标空间、相机、锚点、父节点变化 |
| 一次点击执行两次 | 重复监听、多个输入入口、对象重复创建 |
| 编辑器正常,构建异常 | 资源引用、裁剪、平台 API、包版本 |
| 返回场景后才错 | 静态状态、旧回调、重复初始化、清理不完整 |
堆栈要保留第一条相关异常和调用链。只截最后一行“NullReferenceException”,往往缺少实际对象和触发过程。
最小复现是什么
保留能触发问题的最少对象、数据和操作,暂时去掉广告、联网与复杂特效。例如“两个同等级整数合成错误”,可以先在纯规则测试中复现;“点不到 UI”则需要保留 Canvas 与 EventSystem 配置。
最小复现不是把一切删掉。若问题只在微信缓存资源时出现,就必须保留相关平台与加载条件。
发给 AI 的错误包
期望:0号格拖到1号格后,1号格升到2级,源格清空。
实际:数据正确,但画面仍显示两个1级物品。
环境:编辑器/包/转换SDK/微信/设备版本。
步骤:启动默认局 → 拖动 → 松手。
证据:操作前后棋盘、第一条相关日志、BoardView代码、对象引用。
范围:第一次可复现;关闭动画后仍可复现。
要求:先定位状态到视图的链路,再给出最小修改与验证步骤。
这样的上下文能让 AI 从证据出发。修复后回归同一复现步骤,再检查相关正常路径。不要通过增加延迟、吞掉异常或反复重启来掩盖根因。