【问题标题】:GKMatch expectedPlayerCount always be 1GKMatch expectedPlayerCount 始终为 1
【发布时间】:2016-11-21 06:58:04
【问题描述】:

我正在创建一个 2 人 iOS 游戏。我使用 GKMatchMaker 来帮助我自动匹配玩家,这是我在创建请求时所做的:

GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.defaultNumberOfPlayers = 2 ;
request.playerAttributes = 0 ; // NO SPECIAL ATTRIBS
request.playerGroup = 0 ;
[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch *match, NSError *error) {
    if (!_matchStarted && match.expectedPlayerCount == 0){
            ...
        }

}];

我将 min/max/default player all 设置为 2。但是,每次调用完成处理程序(这意味着创建匹配)时,expectedPlayerCount 始终为 1。

这也发生在我的邀请处理程序中(还在邀请请求中将最小/最大玩家设置为 2):

[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {
    if (acceptedInvite){
        [[GKMatchmaker sharedMatchmaker] matchForInvite:acceptedInvite completionHandler:^(GKMatch *match, NSError *error) {
                if (!_matchStarted && match.expectedPlayerCount == 0){
                    ...
                }}}];}

expectedPlayerCount 永远不会为 0。有人知道这是怎么发生的吗? (当我使用标准匹配视图控制器时它工作正常,所以我想我设置了正确的游戏套件,例如验证本地玩家......) 谢谢!

【问题讨论】:

    标签: ios game-center


    【解决方案1】:

    如果您对 GKMatch 对象进行打印,您将看到 GKPlayer 连接状态未知。您看到的 expectedPlayer 计数为 1,因为 GKPlayer 尚未实际连接到 GKMatch 对象。在 completionHandler 中设置匹配委托,如下所示:match.delegate = self。然后声明/采用并实现 GKMatchDelegate 协议。特别是 didChangeConnectionState。设置代理后,您可以接收比赛连接状态的更改,并在玩家连接到比赛时收到通知。当玩家连接到匹配时,匹配的预期玩家数量将反映更改。希望这对某人有所帮助。

    【讨论】:

      【解决方案2】:

      playerAttributes 用于在匹配过程中匹配玩家。 GameCenter ORs 不同玩家的 playerAttributes 值,如果任何一组玩家将 OR 到 0xFFFFFFFF,那么这些玩家就是添加到比赛中的玩家。

      当然,playerGroup 也是该过程的一部分,但不是在这种情况下,因为所有玩家的 playerGroup 都为 0(GameCenter 计算 playerGroup 的方式不同。)

      尝试将所有玩家的 playerAttribues 设置为 0xFFFFFFFF

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-04
        • 2016-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-10
        • 2015-06-04
        • 1970-01-01
        相关资源
        最近更新 更多