过滤器
Use filters to determine whether to execute a trigger and avoid unnecessary trigger execution.
阅读时间3 分钟最后更新于 1 个月前
您可以使用过滤器来确定是否执行触发器,并避免触发器不必要的执行。您可以在触发器配置的
filter
您可以在触发器配置的
filtertruemy-leaderboard触发器使用事件有效负载作为输入。事件有效负载是一个 JSON 对象,其中包含与事件相关的数据。例如,{ "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'"}
com.unity.services.leaderboards.reset.v1{ "leaderboardId": "my-leaderboard", "leaderboardVersionId": "20230213175322850781977"}
CEL 语法
您需要使用 CEL(通用表达语言)编写过滤器,这是 Google Cloud 产品使用的表达语言。如需了解有关 CEL 的更多信息,请参阅语言定义。 下面的示例展示了一些可以在过滤器中使用的通用 CEL 表达式。均等
当字段等于特定值时,您可以将过滤器设置为 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 的value如果的data['value'] > 5
data['value']stringvalue类型转换
您可以将事件有效负载中的值类型转换为其他类型。这可以帮助您避免类型不匹配错误。例如,如果您传递一个数字字符串值,则可以将其转换为数字,并仍在需要数字的过滤器中使用它。但是,如果int(data['value']) > 5
data['value']