我正在开发一款棋盘游戏。使用游戏中心的多人游戏,但目前停留在如何发送或接收GKTurnBasedMatch的邀请。我使用以下命令以编程方式创建匹配:
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.defaultNumberOfPlayers = 2;
[GKTurnBasedMatch findMatchForRequest:request
withCompletionHandler:
^(GKTurnBasedMatch *match, NSError *error) {
if(error) {
NSLog(@"%@", error.localizedDescription);
return;
}
[self.delegate startGameForMatch:match];
}];在上面的块参数中的GKTurnBasedMatch实例,只有本地玩家和其他玩家作为nil,我需要显示游戏中对手的详细信息。
NSMutableArray *participantIds = [[NSMutableArray alloc] init];
NSLog(@"%@", match.participants);
for (GKTurnBasedParticipant *participant in match.participants) {
if(participant.playerID) [participantIds addObject:participant.playerID];
}
[GKPlayer loadPlayersForIdentifiers:participantIds
withCompletionHandler:^(NSArray *players, NSError *error) {
NSMutableString *string = [[NSMutableString alloc] init];
for (GKPlayer *player in players) {
[string appendFormat:@"---- Alias: %@ DisplayName: %@", player.alias, player.displayName];
}
NSLog(@"%@", string);
}];我是不是遗漏了什么或者Game Center是这样工作的?我读到比赛的参与者在GKTurnBasedParticipant为GKTurnBasedMatch.currentParticipant之前不会收到邀请,但我需要在比赛开始时显示对手的详细信息。
谢谢你的帮助。请给我指出正确的方向。
发布于 2014-07-01 08:23:08
当您创建一个与随机对手的匹配时,就会发生这种情况。尝试在iTunesConnect中创建第二个测试用户,然后在另一台设备上登录该用户。
然后,向第二个测试者发送一个邀请,让他成为你的朋友。这将允许您更容易地使用多人游戏功能测试您的游戏,而不必等待随机匹配被找到。
好友请求被接受后,再次尝试创建新游戏。现在,邀请你的“朋友”来玩你的游戏,然后开始轮到你。现在,您将注意到(null)变量将在很大程度上被填充。像这样的东西现在应该会出现在你的日志中-
GKTurnBasedParticipant 0xb9432e0 - playerID:G:123456789状态:邀请匹配Invited:无lastTurnDate:(null) timeoutDate:(null)
https://stackoverflow.com/questions/22929256
复制相似问题