1

如何识别多人游戏是通过自动匹配还是邀请朋友发起的?

我在比赛开始时调用了这个方法:

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)theMatch {

    [presentingViewController dismissModalViewControllerAnimated:YES];
    self.match = theMatch;
    match.delegate = self;
    if (!matchStarted && match.expectedPlayerCount == 0) {
        NSLog(@"Ready to start match!");
        [self lookupPlayers];
    }
}

基本上我想要这个(请检查这个链接) -如何在多人游戏中同步数据(游戏中心 ios)

4

1 回答 1

2

我检查本地玩家的 playerID 是否包含在比赛的参与者列表中。我发现如果他们被邀请或自动匹配,他们不会被列出。我相信这是因为他们还没有接受比赛。

+ (BOOL) isLocalPlayerActiveParticipantInMatch:(GKTurnBasedMatch *)aMatch
{
    for (GKTurnBasedParticipant *participant in aMatch.participants)
    {
        if ([participant.playerID isEqualToString:[GKLocalPlayer localPlayer].playerID])
            return YES;
    }

    return NO;
}

如果付款人决定参加比赛,我称之为比赛:

GKTurnBasedMatch acceptInviteWithCompletionHandler

如果他们拒绝,我称之为比赛:

GKTurnBasedMatch declineInviteWithCompletionHandler
于 2012-12-19T00:22:18.377 回答