跳到主要内容

Monitor Scope(监控范围)

在区域内节点运行时守望某个条件,触发时可重定向运行。

Monitor Scope 是"随时可能有东西打断我的流程"的答案——弹窗、断连、意外对话框——而不必在每个节点外包一层检查。

用途

画布上的一个区域。当运行正在执行卡片完全位于该区域内的任何节点时,一个监控器定期运行一个独立的检测流程。若该检测在一个被映射的出口结束,运行就从你指定的节点继续。

何时用

  • 打断可能出现在一个阶段的任何时点——弹窗、广告、断连警告。
  • 你需要给一段长序列一张安全网,而不在每步之间加检查。
  • 恢复应发生在运行当前所在处,而非固定检查点。

何时不用

  • 在一个已知点做一次检查——普通的 Find Image 更简单更便宜。
  • 需要每个节点都动作的东西——监控器按间隔运行,不是每步。
  • 替代错误处理。 你的 Failure 端口照样要接。

前提

  • 一个仅检测的流程作为守望。
  • 一个有真实尺寸的区域——无尺寸的区域什么都覆盖不到、永不武装。
  • 监控器必须启用;它出生时是关的。

如何运行

这个设计带来两点:

区域节点从不接进流程。 它没有你画的进出连线。它只携带几何与配置。

成员资格是几何的。 把节点拖进拖出区域就是一次拖拽——没有节点保存会过期的父 id。与分组同一模型。

按出口的 Next Node

把监控器与你的流程相连的唯一机制:一个从检测流程的 Stop 节点 id主流程节点的映射,检查在该 Stop 结束时运行就从那个节点继续。

检测流程结束于主流程从此继续
Stop: 发现弹窗关闭弹窗
Stop: 已断连重连例程
Stop: 一切正常(未映射——纯观察)

映射到空的出口是纯观察:监控器注意到、记录,运行不受打扰地继续。

设置

设置类型范围默认备注
Monitor namestring≤ 120 字符显示标签
Monitor enabledbooleanfalse出生即关——你必须打开
Watch flow流程引用≤ 120 字符每次检查运行的仅检测流程
Zone width / heightnumber0–10000矩形尺寸。原点是节点的画布位置
Exit next nodesmap≤ 64 项检测 Stop id → 主流程节点 id
Priorityinteger有界多个监控器武装时谁胜出
Check intervalinteger有界 ms多久运行一次检测
Cooldowninteger0–max ms两次触发的最小间隔
Sustainedinteger0–max ms条件须保持多久才触发
Max triggers per activationinteger0–1000每次武装的上限;0 = 无限

Check interval 是成本旋钮

每次检查运行一整个检测流程。60 秒阶段上 500 ms 的间隔就是 120 次检测运行。

把它设成仍能及时抓住打断的最慢间隔。

Sustained 防假阳性

sustainedMs 要求条件保持那么久才触发。这过滤掉瞬时状态——动画中途的对话框、转场里的闪烁。

Cooldown 防风暴

cooldownMs 是两次触发的最小间隔,让持续存在的条件不会反复触发恢复路径。

Max triggers per activation

每次武装的硬上限。当一个恢复不停触发意味着确实出了问题、循环比停止更糟时用它。

端口

区域节点从不接线。它暴露一个直通 success 端口,让手接的旧负载仍能路由,以及一个 fatal 端口——但正常创作中你不往它上面接任何东西。

端口备注
Success旧负载的直通;正常创作中不用
Fatal配置错误。永不被走

基础示例

在长阶段里守望弹窗:

  • Monitor name:Popup watch
  • Monitor enabled:
  • Watch flow:Detect Popup
  • Check interval:1000 ms
  • Exit map:Stop: 发现弹窗关闭弹窗
  • 区域:画在该阶段的节点周围

实际示例——一个阶段上的安全网

区域内四个节点被守望。若检测流程在它的"发现弹窗" Stop 结束,运行跳到关闭弹窗,随后重新进入该阶段。

区域外的节点不被守望——所以监控器在流程其余部分零成本。

高级示例——分层监控器

两个区域,不同优先级与间隔:

监控器守望间隔优先级映射到
Disconnect watch断连对话框2000 ms重连例程
Popup watch例行弹窗1000 ms较低关闭弹窗

两者都武装且都可能触发时,优先级决定谁胜。把更严重的条件放更高优先级。

最佳实践

  • 启用监控器。 它出生即关,这是监控器"什么都不做"的最常见原因。
  • 给区域真实尺寸,并检查你想要的节点完全在其内。
  • 保持 watch flow 极小——只检测、不动作。它每次检查都运行。
  • 用仍能抓住问题的最长间隔。
  • 对可能出现在动画中途的东西设 sustainedMs
  • cooldownMs,让持续条件不反复触发。
  • 把恢复节点映射成能重新进入该阶段,否则运行会在不再合理的地方继续。
  • 区域收紧。 覆盖整个流程的监控器为整个流程付成本。

性能笔记

  • 成本 =(区域内执行的节点)×(检查频率)×(watch flow 成本)。三者相乘。
  • 带全屏 Find Image 的 watch flow 远贵于带小搜索区域的。给 watch flow 紧区域。
  • 监控器通过在每个节点前 diff scope chain 来武装/解除,这很便宜。开销在检查本身。
  • 优先几个小区域而非一个覆盖全流程的区域。

内存笔记

  • watch flow 作为一次检测运行;每次检查持有一帧。
  • 监控器状态(上次触发时间、触发计数、sustained 计时)按运行且很小。
  • 编译期的 scope chain 打在展开后的内存图上,绝不在你保存的流程里。

常见错误

错误后果修复
监控器没启用什么都不发生打开它
区域无尺寸覆盖不到、不武装给真实尺寸
节点只有一部分在区域内不被覆盖——需要卡片完全在内调整区域大小
watch flow 执行动作动作每次检查都触发只检测
间隔太短大幅变慢拉长
持续条件无 cooldown恢复反复触发设 cooldown
恢复节点不重新进入阶段运行在错的地方继续重新映射
试图给区域节点接线它从不接线让它保持不接

故障排查

监控器从不触发。 依次检查:是否启用;区域是否有真实尺寸;节点是否完全在内;是否选了 watch flow;检测流程是否真的到达被映射的 Stop。

它不停触发。 没有 cooldown,或没有 sustained 阈值。两个都加。

在区域内流程大幅变慢。 检查间隔太短,或 watch flow 太贵。拉长间隔并给 watch flow 搜索区域。

运行在奇怪的地方继续。 出口映射指向不重新进入阶段的节点。重新映射。

某个被映射的出口键什么都不做。 该 Stop 已从检测流程移除。过期的键无害——它永远无法触发——Properties 面板会把它显示为缺失。

FAQ

区域节点会执行吗? 不。它只携带几何与配置,且从不接进流程。

成员资格如何决定? 几何——节点的卡片完全位于区域矩形内即被覆盖。

多个监控器能同时武装吗? 能。优先级决定谁胜。

watch flow 能做什么? 只做检测。它不应发送输入。

能映射几个出口? 最多 64。

相关节点

  • Find Image——watch flow 通常用的
  • Check Region——便宜的守望条件
  • Sub Flow——监控器跳入的恢复例程
  • Stop——检测流程的出口就是 Stop 节点

相关页面