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("領域: X=" .. region:getX() .. ", Y=" .. region:getY())
toast("サイズ: " .. region:getWidth() .. "x" .. region:getHeight())
-- 一致した領域内で検索してマッチングを高速化
local innerResult = region:find("container.png")
if innerResult then
toast("領域内に container.png が見つかりました!")
end
end
フィットリージョンテクニック
getRegion() は、よく fit region(フィットリージョン)と呼ばれる重要な最適化パターンの鍵となるメソッドです。
このパターンは次の通りです:
Screen上で安定したオブジェクトを見つけるMatchResultに対してgetRegion()を呼び出す- 同じオブジェクト内での繰り返し検索にその領域を再利用する
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
このテクニックは、一致したオブジェクトが常にほぼ同じサイズを持つ場合に最も効果を発揮します。同じコンテナ内の各ステップで画面全体の検索を繰り返す必要がなくなるため、処理コストを大幅に削減できます。