事件
Understand how the Scheduler service and Unity Gaming Services produce events that Triggers service processes.
阅读时间5 分钟最后更新于 1 个月前
Scheduler 服务和 Unity Gaming Services(Unity 游戏服务)会产生事件。这些事件随后发送到 Triggers 服务,进而与配置进行匹配,然后执行相应的 Cloud Code 脚本或模块。
发出的事件
Scheduler 服务和 Unity Gaming Services(Unity 游戏服务)会发出事件,您可以将触发器关联到这些事件。发出者 | 可自定义 | 事件有效负载 | 发出时间 | 用例 |
|---|---|---|---|---|
| Unity Gaming Services(Unity 游戏服务) | 否 | 使用特定于事件的有效负载和版本控制进行预定义 | 玩家或游戏状态更改时 | 当您想要触发 Cloud Code 脚本或模块作为对游戏或玩家状态更改的响应时,请使用 UGS 发出的事件。 |
| Scheduler 服务 | 是 | 由用户在计划配置中创建 | 用户定义的设定时刻或重复时刻 | 当您想要控制何时触发 Cloud Code 脚本或模块时,请使用 Scheduler 服务发出的事件。 |
传递语义
默认情况下,事件具有“至少一次”传递语义。这意味着所有事件都保证被处理一次,但在发生网络问题时可能会被处理多次。为避免这种情况,建议的最佳做法是创建幂等 Cloud Code 脚本和模块。事件结构
所有事件都包含事件类型、有效负载版本并携带有效负载。字段 | 描述 | 示例 |
|---|---|---|
| 事件类型是一个包含发出服务、事件名称和有效负载版本的字符串。事件类型也用于触发器配置创建关联性。 | |
| 有效负载版本是一个整数,表示有效负载的版本。 | 1 |
| 有效负载是包含事件数据的字符串。有效负载以脚本或模块参数的形式传递到 Cloud Code。 | |
事件类型 | 发出者 | 有效负载版本 | 有效负载 |
|---|---|---|---|
| Scheduler 服务 | 1 | 由用户定义 |
| Authentication 服务 | 1 | 预定义 |
| Authentication 服务 | 1 | 预定义 |
| Cloud Save 服务 | 1 | 预定义 |
| Leaderboards 服务 | 1 | 预定义 |
| Leaderboards 服务 | 1 | 预定义 |
有效负载版本控制
有效负载版本控制有助于避免重大更改。每个事件都包含事件有效负载的有效负载版本控制。 例如,com.unity.services.player-auth.signed-up.v11计划性事件有效负载
Scheduler 服务发出的事件具有可自定义的有效负载。有效负载在计划配置中进行定义。 例如,如果要向计划性事件有效负载添加新字段,则可以创建新版本的有效负载,并创建触发器以使用新版本的有效负载。 一个计划配置可能如下所示:以上示例将产生事件类型{"name" : "recurring-schedule","eventName": "example-event","type": "recurring","schedule": "0 0 * * *","payloadVersion": 1,"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"}
com.unity.services.scheduler.example-event.v1如果要向事件有效负载添加新字段,则可以创建新版本的有效负载,并创建触发器以使用新版本的有效负载。{"name" : "example-trigger","eventType" : "com.unity.services.scheduler.example-event.v1","actionUrn" : "urn:ugs:cloud-code:my-script","actionType" : "cloud-code"}
以上示例将产生事件类型{"name" : "recurring-schedule","eventName": "example-event","type": "recurring","schedule": "0 0 * * *","payloadVersion": 2,"payload": "{\"someBoolean\": true, \"someString\": \"something\", \"someNewField\": \"something else\"}"}
com.unity.services.scheduler.example-event.v2计划性事件
要发出计划性事件,必须创建计划配置。如需了解更多信息,请参阅计划事件。 通过部署计划配置,您可以创建在设定时刻或重复时刻发出的事件。 以下是一个计划配置示例:{"name" : "example-schedule","eventName": "example-event","type": "recurring","schedule": "0 0 * * *","payloadVersion": 1,"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"}
- :计划的名称。对于每个项目,此名称必须具有唯一性。
name - :项目范围内的事件名称,决定了触发器的事件类型。
eventName - :计划的类型。必须为
type或one-time。recurring - :指定应触发事件的时间。必须为时间戳或 cron 表达式,具体取决于
schedule字段。type - :一个表示有效负载版本的整数,决定了触发器的事件类型。
payloadVersion - :用作事件有效负载的
payload对象,旨在将参数转发到 Cloud Code 脚本或模块。JSON
一次性计划
一次性计划是指在特定时间执行的单个事件。可能如下所示:{"name" : "one-time-schedule","eventName": "example-event","type": "one-time","schedule": "2020-01-01T00:00:00Z","payloadVersion": 1,"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"}
schedule定期计划
定期计划是以特定时间间隔执行的一系列事件。可能如下所示:{"name" : "recurring-schedule","eventName": "example-event","type": "recurring","schedule": "0 0 * * *","payloadVersion": 1,"payload": "{\"someBoolean\": true, \"someString\": \"something\"}"}
schedule