フィルター
Use filters to determine whether to execute a trigger and avoid unnecessary trigger execution.
読み終わるまでの所要時間 2 分最終更新 3ヶ月前
フィルターを使用して、トリガーを実行するかどうかを決定し、トリガーの不必要な実行を回避できます。フィルターは、トリガーの設定の フィールドで定義できます。
filter例えば、以下のトリガー設定は、 リーダーボード ID を持つリーダーボードがリセットされた場合にのみ実行されます。
my-leaderboard{ "name": "reset-another-leaderboard", "eventType": "com.unity.services.leaderboards.reset.v1", "actionType": "cloud-code", "actionUrn": "urn:ugs:cloud-code:test-script", "filter": "data['leaderboardId'] == 'my-leaderboard'"}
トリガーは、イベントペイロードを入力として使用します。イベントペイロードは、イベントに関連するデータが含まれる JSON オブジェクトです。例えば、 イベントのペイロードは以下のようになります。
com.unity.services.leaderboards.reset.v1{ "leaderboardId": "my-leaderboard", "leaderboardVersionId": "20230213175322850781977"}
CEL 構文
フィルターは、Google Cloud 製品で使用される式言語である CEL (Common Expression Language) で記述する必要があります。CEL の詳細については、言語定義 を参照してください。
以下のサンプルは、フィルターで使用できる一般的な CEL 式の一部を示しています。
Equality (等値)
フィールドが特定の値と等しい場合に、フィルターを true に設定できます。これらのフィルターを使用すると、渡されたパラメーターが特定の値であることを確認できます。
例えば、以下のフィルターを使用して、 の値が であるかどうかを確認できます。
leaderboardIdmy-leaderboarddata['leaderboardId'] == 'my-leaderboard'
正規表現
正規表現を使用して、フィールドをパターンと照合できます。例えば、以下のフィルターを使用して、 の値が で始まるかどうかを確認できます。
leaderboardIdtiered-leaderboard#data['leaderboardId'].matches('^tiered-leaderboard#.*')
ネストされたフィールド
ネストされたフィールドを持つフィルターを使用できます。例えば、スクリプトまたはモジュールのパラメーターが以下のようであるとします。
{ "inventory": { "primaryWeapon": "sword", "secondaryWeapon": "bow" }}
以下のフィルターを使用して、 の値が であるかどうかを確認できます。
inventory.primaryWeaponsworddata['inventory']['primaryWeapon'] == 'sword'
論理演算子
論理演算子を使用して、複数の式を組み合わせることができます。
例えば、以下のフィルターを使用して、プレイヤーにクエストを発行するタイミングを決定できます。プレイヤーがレベル 5 に達したとき、またはプレイヤーが クエストを完了し、現在のクエストが である場合に、クエストを発行します。
collectWoodbuildFence(data['currentQuest'] == 'buildFence' && data['lastQuest'] == 'collectWood') || data['level'] == 5
型の不一致
イベントペイロードの値の型がフィルター内の値の型と一致しない場合、フィルターはログにエラーメッセージを返し、トリガーは実行されません。
例えば、以下のフィルターは、Cloud Save イベントペイロードに 5 より大きい フィールドが含まれているかどうかを確認します。
valuedata['value'] > 5
data['value']stringvalue型のキャスト
イベントペイロード内の値の型を別の型にキャストできます。これにより、型の不一致エラーを回避できます。例えば、数字である文字列値を渡す場合、それを数値にキャストし、数値を期待するフィルターで引き続き使用できます。
int(data['value']) > 5
ただし、 の値が数字ではない文字列の場合、フィルターはログにエラーメッセージを返し、トリガーは実行されません。
data['value']キャスト可能な型を確認するには、標準定義のリスト を参照してください。