历史记录管理
历史记录功能允许你回溯参数的所有变化,方便分析游戏逻辑和调试问题。
打开历史记录
- 在调试器面板中找到目标参数
- 点击参数卡片右侧的 「原值」 按钮
- 弹出历史记录窗口
┌─────────────────────────────────────────────────────┐
│ uids [×] │
│ BattleUsers │
├─────────────────────────────────────────────────────┤
│ [🔍] [📷] [💾] [📋] [🗑️] │
├─────────────────────────────────────────────────────┤
│ ┌─────────────────────────────────────────────────┐ │
│ │ 记录 #15 [📋] [💾] │ │
│ │ [ │ │
│ │ { "userId": 12345, "name": "Player1" }, │ │
│ │ { "userId": 67890, "name": "Player2" } │ │
│ │ ] │ │
│ └─────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ 记录 #14 [📋] [💾] │ │
│ │ [ │ │
│ │ { "userId": 12345, "name": "Player1" }, │ │
│ │ { "userId": 11111, "name": "Player3" } │ │
│ │ ] │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘记录内容
调试器会记录每次变量被赋值时的完整值:
| 字段 | 说明 |
|---|---|
| 记录 #N | 序号,数字越大表示越新(最新的在顶部) |
| 值内容 | 该时刻变量的完整快照 |
记录触发时机:
- 游戏内部修改变量时
- 你通过调试器注入修改时
- 页面刷新后重新进入战斗时
窗口功能
顶部工具栏
| 按钮 | 功能 | 说明 |
|---|---|---|
| 🔍 过滤重复 | 隐藏连续重复的记录 | 减少冗余,方便查看变化 |
| 📷 提取媒体 | 提取该参数中的所有图片/音频 | 适用于包含媒体对象的参数 |
| 💾 保存全部 | 将全部历史记录导出为 .txt 文件 | 完整导出,无截断 |
| 📋 复制全部 | 将全部历史记录复制到剪贴板 | 完整复制,无截断 |
| 🗑️ 清空记录 | 删除该参数的所有历史记录 | 释放内存 |
单条记录操作
每条记录右侧有两个按钮:
| 按钮 | 功能 |
|---|---|
| 📋 复制单条 | 仅复制当前这条记录 |
| 💾 保存单条 | 将当前记录导出为 .txt 文件 |
媒体提取功能
当参数中包含图片、音频等媒体对象时,可以使用「提取媒体」功能:
支持的类型:
| 类型 | 导出格式 | 说明 |
|---|---|---|
| 图片(ImageBitmap / Image 等) | .png | 自动转换为 PNG |
| 音频(AudioBuffer) | .wav | 转换为 WAV 格式 |
| 通用 Blob | 原格式 | 按原类型保存 |
使用步骤:
- 打开历史记录窗口
- 点击顶部 📷 按钮
- 等待扫描(最多 5 秒)
- 浏览器会依次下载所有媒体文件
💡 提示:如果参数中包含大量媒体,建议使用「保存单条」或「保存全部」导出 JSON 格式的原始数据。
智能截断保护
当历史记录数据量过大时,预览窗口会自动截断,防止浏览器卡顿:
预览视图数据量已达安全上限
为防止浏览器内存溢出或卡顿,剩余 23 条更早的历史记录已被隐藏。
请点击顶部菜单的 [保存全部为文件] 导出并查看完整历史记录。解决方法:
- 点击 💾 保存全部 导出完整文件
- 点击 🗑️ 清空记录 释放内存
过滤重复
启用「过滤重复」后:
原始记录(全部):
#15: { name: "Player1", rank: 10 }
#14: { name: "Player1", rank: 10 } ← 与上一条相同
#13: { name: "Player2", rank: 20 }
#12: { name: "Player2", rank: 20 } ← 与上一条相同
#11: { name: "Player1", rank: 15 }过滤后(仅显示变化):
#15: { name: "Player1", rank: 10 }
#13: { name: "Player2", rank: 20 }
#11: { name: "Player1", rank: 15 }适合观察值的变化趋势,而不是每一条记录。
数据结构格式化
历史记录窗口会以语法高亮的形式显示数据:
json
{
"userId": 12345, ← jv-key(青色)
"name": "Player1", ← jv-string(蓝色)
"rank": 15, ← jv-number(绿色)
"premium": false, ← jv-boolean(紫色)
"team": null ← jv-null(红色)
}| 类型 | 颜色 |
|---|---|
| 键名 | 青色 |
| 字符串 | 蓝色 |
| 数字 | 绿色 |
| 布尔值 | 紫色 |
| null/undefined | 红色 |
| 函数/对象 | 黄色 |
实战示例
示例1:分析玩家进入/离开
- 添加
BattleUsers.uids - 进入战斗,等待玩家变动
- 打开历史记录
- 比较不同记录的数组长度和内容
示例2:追踪排行榜变化
- 添加排行榜相关参数(如
GlobalRanking.data) - 观察排名变化时的新值
- 使用「过滤重复」只看变化时刻
示例3:提取游戏贴图
- 找到包含
Image或Canvas的参数 - 打开历史记录
- 点击 📷 提取媒体
- 保存所有提取的图片
性能注意事项
| 注意 | 说明 |
|---|---|
| 记录上限 | 无硬性上限,但过多记录会占用内存 |
| 大对象 | 单个记录超过 30KB 时预览会被截断 |
| 高频变量 | 如 mouse.position 会快速产生大量记录,建议不要长期监听 |
| 清空记录 | 不再需要的历史记录建议及时清空 |
存储说明
历史记录存储在内存中,不会持久化保存:
| 操作 | 影响 |
|---|---|
| 刷新页面 | ❌ 历史记录丢失 |
| 退出战斗 | ❌ 历史记录丢失 |
| 关闭浏览器 | ❌ 历史记录丢失 |
重要数据请及时使用「保存全部」功能导出!
