ドキュメント

サポート

Cloud Code

フィルター

Use filters to determine whether to execute a trigger and avoid unnecessary trigger execution.
読み終わるまでの所要時間 2 分最終更新 23日前

フィルターを使用して、トリガーを実行するかどうかを決定し、トリガーの不必要な実行を回避できます。フィルターは、トリガーの設定の
filter
フィールドで定義できます。
フィルターは、トリガーの設定の
filter
フィールドで定義します。このフィールドの値は、ブーリアン値に評価される CEL 式 です。式が
true
と評価された場合に、トリガーが実行されます。
例えば、以下のトリガー設定は、
my-leaderboard
リーダーボード ID を持つリーダーボードがリセットされた場合にのみ実行されます。
{ "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 に設定できます。これらのフィルターを使用すると、渡されたパラメーターが特定の値であることを確認できます。 例えば、以下のフィルターを使用して、
leaderboardId
の値が
my-leaderboard
であるかどうかを確認できます。
data['leaderboardId'] == 'my-leaderboard'

正規表現

正規表現を使用して、フィールドをパターンと照合できます。例えば、以下のフィルターを使用して、
leaderboardId
の値が
tiered-leaderboard#
で始まるかどうかを確認できます。
data['leaderboardId'].matches('^tiered-leaderboard#.*')

ネストされたフィールド

ネストされたフィールドを持つフィルターを使用できます。例えば、スクリプトまたはモジュールのパラメーターが以下のようであるとします。
{ "inventory": { "primaryWeapon": "sword", "secondaryWeapon": "bow" }}
以下のフィルターを使用して、
inventory.primaryWeapon
の値が
sword
であるかどうかを確認できます。
data['inventory']['primaryWeapon'] == 'sword'

論理演算子

論理演算子を使用して、複数の式を組み合わせることができます。 例えば、以下のフィルターを使用して、プレイヤーにクエストを発行するタイミングを決定できます。プレイヤーがレベル 5 に達したとき、またはプレイヤーが
collectWood
クエストを完了し、現在のクエストが
buildFence
である場合に、クエストを発行します。
(data['currentQuest'] == 'buildFence' && data['lastQuest'] == 'collectWood') || data['level'] == 5

型の不一致

イベントペイロードの値の型がフィルター内の値の型と一致しない場合、フィルターはログにエラーメッセージを返し、トリガーは実行されません。 例えば、以下のフィルターは、Cloud Save イベントペイロードに 5 より大きい
value
フィールドが含まれているかどうかを確認します。
data['value'] > 5
data['value']
の値が
string
の場合、フィルターは期待どおりに機能しません。このフィルターは、イベントペイロード内の
value
が数値である場合にのみ評価されます。

型のキャスト

イベントペイロード内の値の型を別の型にキャストできます。これにより、型の不一致エラーを回避できます。例えば、数字である文字列値を渡す場合、それを数値にキャストし、数値を期待するフィルターで引き続き使用できます。
int(data['value']) > 5
ただし、
data['value']
の値が数字ではない文字列の場合、フィルターはログにエラーメッセージを返し、トリガーは実行されません。
キャスト可能な型を確認するには、標準定義のリスト を参照してください。