PFMultiplayerCreateMatchmakingTicket
为一个或多个本地用户创建匹配票证。
语法
HRESULT PFMultiplayerCreateMatchmakingTicket(
PFMultiplayerHandle handle,
uint32_t localUserCount,
const PFEntityKey* localUsers,
const char* const* localUserAttributes,
const PFMatchmakingTicketConfiguration* configuration,
void* asyncContext,
PFMatchmakingTicketHandle* ticket
)
参数
handle
PFMultiplayerHandle
PFMultiplayer API 实例的句柄。
localUserCount
uint32_t
要包含在票证中的本地用户计数。
localUsers
PFEntityKey*
大小为 localUserCount
的输入数组
要包含在票证中的本地用户数组。
localUserAttributes
char* const*
大小为 localUserCount
的输入数组
本地用户属性字符串的数组。 每个本地用户都应有一个属性字符串。 每个属性字符串都应为空字符串或序列化 JSON 对象。 例如 {"player_color":"blue","player_role":"tank"}
。
configuration
PFMatchmakingTicketConfiguration*
票证配置。
asyncContext
void*
可选
一个可选应用定义的指针大小的上下文值,可用于将完成状态更改与此调用关联起来。
ticket
PFMatchmakingTicketHandle*
库分配的输出
生成的票证对象。
返回值
类型:HRESULT
如果调用成功,则为 S_OK
,否则为错误代码。 可通过 PFMultiplayerGetErrorMessage() 检索错误代码的可读形式。
备注
该库会自动异步地将票证上的所有指定本地用户提交到匹配服务。 每次票证状态更改时,都会提供 PFMatchmakingTicketStatusChangedStateChange。 可以随时通过 PFMatchmakingTicketGetStatus() 查询票证状态。 票证将立即以 PFMatchmakingTicketStatus::Creating
状态启动。
票证完成后,将提供 PFMatchmakingTicketStatusChangedStateChange。 此时,会找到匹配项,或者票证因失败而停止。 成功后,可以通过 PFMatchmakingTicketGetMatch() 查询找到的匹配项。
如果由于指定用户的票证已过多而导致票证创建失败,则库会透明地取消这些未完成的票证,然后重试创建票证。
在configuration
参数membersToMatchWith
字段中指定的所有远程用户都通过PFMultiplayerJoinMatchmakingTicketFromId() 加入票证之前,才能找到匹配项。
要求
标头: PFMatchmaking.h