跳到主要内容

MatchResult:getRegion()

以 Region 对象的形式返回匹配区域。

描述

getRegion() 方法返回一个 Region 对象,表示找到匹配项的矩形区域。该区域包括左上角的位置(X、Y)以及匹配区域的尺寸(宽度和高度)。

返回的 Region 可用于:

  • 在匹配区域内进行进一步搜索
  • 仅对匹配区域进行截图
  • 为其他操作定义子区域
  • 构建适配的搜索区域,以加快重复匹配速度

签名

getRegion(): Region

返回值

Region - 表示匹配区域矩形边界的 Region 对象。

示例

local result = Screen:find("container.png")
if result then
local region = result:getRegion()
toast("Region: X=" .. region:getX() .. ", Y=" .. region:getY())
toast("Size: " .. region:getWidth() .. "x" .. region:getHeight())
-- 在匹配区域内搜索以加快匹配速度
local innerResult = region:find("container.png")
if innerResult then
toast("Found container.png inside region!")
end
end

适配区域(Fit Region)技巧

getRegion() 是一种通常被称为 fit region(适配区域)的重要优化模式背后的关键方法。

该模式的步骤为:

  1. Screen 上查找一个稳定的对象
  2. MatchResult 调用 getRegion()
  3. 复用该区域,在同一对象内进行重复搜索
local panel = Screen:find("reward-panel.jpg")
if panel then
local fitRegion = panel:getRegion()

-- 仅在适配的面板内搜索,而不是全屏搜索
local claim = fitRegion:find("claim-button.jpg")
if claim then
fitRegion:click("claim-button.jpg")
end
end

当匹配对象的大小始终大致相同时,此技巧的效果最佳。它可以显著降低处理开销,因为您避免了在同一容器内的每一步都重复进行全屏搜索。