跳到主要内容

第 06 课 · 读取所有值类型

四个读数,四种值形态,一个节点,一张截图。

问题

仪表盘显示 Gold 12480、Energy 85%、Troops 3/5、Next Cycle 04:20。真实例程往往同时需要好几个——而四个独立的 Read Text 节点会对同一个屏幕截四次图,又慢,数值还可能在两次截图之间变化。

多区域模式(multi-region)一帧截图里读取多个矩形。

你将学到

  • 多区域 Read Text:多个区域、一个节点、一张截图。
  • 两种结构化类型——Counter (x/y)Time (mm:ss)——以及它们产出的扁平变量。
  • 在一个表达式里比较两个变量。

开始之前

流程

编辑器中的第 06 课流程

徽标按阅读顺序给节点编号,与动手构建步骤对应。四个读数、四种内容类型、一个流程——值类型是节点自身的一项设置,不是换一种节点。

动手构建

  1. 新建流程;声明六个可空变量:gold(number?)、energy(number?)、troops_currenttroops_maxcycle_hourscycle_minutes(均为 number?)。
  2. 添加 Read Text,命名 1. Read all four readouts in one node,打开 Read multiple regions。添加四个区域:
区域(在 Live Preview 上绘制)What to read产出变量
Gold 读数Numbergold
Energy 读数Percentageenergy
Troops 读数Counter (x/y)troops_currenttroops_max
Next Cycle 读数Time (mm:ss)cycle_hourscycle_minutes

这是编辑器中选中该节点的样子——Properties 面板显示区域列表及各自类型:

多区域 Read Text 的 Properties

  1. 添加一个 If,Expression 模式:{{troops_current}} >= {{troops_max}}
  2. 三个 Stop:all slots busy(success)/ slots available(success)/ unreadable(failure)。
  3. 按图连线。Save,Auto Layout。

为什么它是这样工作的

一帧多裁。 节点截一张屏幕图,对每个矩形分别 OCR。比四个节点便宜——而且一致:四个值来自同一瞬间,计数器永远不会比它旁边的计时器"更新"。

结构化类型产出扁平变量。 Counter 给出 troops_currenttroops_max,不是嵌套对象——因为 {{name}} 引用在任何地方(If 表达式、Click 坐标、日志行)都按扁平名解析。命名规则就是简单的 <基名>_<部分>

比较的是两个变量,不是变量与常数——若应用哪天显示 3/8 而不是 3/5{{troops_current}} >= {{troops_max}} 依然正确。屏幕给出比较的两边时,优先用关系而不是魔法数字。

运行

  • 纯净仪表盘(3/5):→ success · A troop slot is free
  • dashboard.html?troops=5/5:→ success · All troop slots in use

先对读取节点跑 Test Node 看输出:六个变量,类型全部正确——energy85(数字,% 已剥掉),cycle_minutes20

最佳实践

  • 一屏一个多区域节点,而不是一个值一个节点。
  • 按含义命名troops_current),绝不按位置(value3)。
  • 逐区域设类型:每个矩形配它内容的类型。
  • 可能时比较关系current >= max)而非常数。
  • 只在后备值真正安全时才设每区域 Default——否则让空值显形。

常见错误

错误后果修复
四个独立 Read Text 节点慢 4 倍,数值来自不同瞬间一个多区域节点
引用 {{troops}}不存在——计数器生成 troops_current/troops_max用扁平名
85% 读数用 Counter 类型没有 x/y 形态可解析 → 空用 Percentage
区域压到两个读数读取混杂一个值一个贴紧的矩形

故障排查

一个区域读得出,另一个是空。 每个区域独立解析。Test Node 显示逐区域的原始 OCR——空的那个矩形偏了,或类型与内容不匹配。

energy 比较出错。 确认是 Percentage 类型:它产出数字 85。Auto 会产出字符串 "85%"

四个同时全空。 那是截图问题,不是四个巧合:前台是错误屏幕,或 OCR 开关没开。

小结

  • 多区域 OCR:一张截图、多个带类型值、天然一致。
  • Counter 与 Time 产出扁平的 _current/_max_hours/_minutes 变量。
  • 屏幕常给出比较的两边——用上它们。

下一课

屏幕上显示的你都读得了。第 07 课 · 用变量计数让流程自己产出值——计数器、一个循环,以及你的第一个按次 Flow Input

另见:Read Text (OCR) · 变量与记忆