기술 자료

지원

Cloud Code

Cloud Code

필터

Use filters to determine whether to execute a trigger and avoid unnecessary trigger execution.
읽는 시간 1분최근 업데이트: 한 달 전

필터를 사용하여 트리거 실행 여부를 결정하고 트리거가 불필요하게 실행되지 않도록 방지할 수 있습니다. 트리거 구성의
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']
값이 숫자가 아닌 문자열이면 필터는 로그에 오류 메시지를 반환하며 트리거는 실행되지 않습니다.
캐스트 가능한 유형을 확인하려면 표준 정의 목록을 참고하십시오.