Game Center基于回合制的配对界面允许用户与多个玩家创建匹配,并将邀请中的一些地方填充给朋友,并让其他人进行自动匹配 .
我正在创建我们自己的游戏内匹配创建界面,到目前为止工作正常,除了与邀请和自动匹配玩家创建匹配 .
GKMatchmaker有addPlayersToMatch方法,我相信你可以在匹配存在时添加自动匹配的玩家,但GKTurnBasedMatch没有等效的方法 .
以下是我正在使用的代码,它运行得很好 . 如果有人知道如何添加一些自动匹配球员,将不胜感激!
- (GKMatchRequest *) buildMatchRequestWithFriends: (NSArray *) friendsList NumberOfPlayers: (NSInteger) numberOfPlayers
{
NSLog(@"TurnByTurnHelper.buildMatchRequestWithFriends");
GKMatchRequest *request = [[GKMatchRequest alloc] init];
NSArray *playersToInvite = [NSArray arrayWithArray:friendsList];
request.playersToInvite = playersToInvite;
request.defaultNumberOfPlayers = numberOfPlayers + 1;
return request;
}
- (void) requestMatchWithFriends:(NSArray *) friendsList NumberOfPlayers: (NSInteger) numberOfPlayers{
if (!_delegate)
{
NSLog(@"Error: Expected but did not find delegate");
return;
}
GKMatchRequest *request = [self buildMatchRequestWithFriends:friendsList NumberOfPlayers: numberOfPlayers];
[GKTurnBasedMatch findMatchForRequest: request withCompletionHandler:^(GKTurnBasedMatch *match, NSError *error)
{
if (match){
NSLog(@"findMatchForRequest: Success!");
// Add match to matches
} else {
NSLog(@"error: %@", error);
}
}];
}
1 回答
好吧,通过一些搜索和测试,我发现Apple Developer文档不完整和/或误导 . 以下语句在GKMatchRequest的playersToInvite属性部分中进行:
“如果属性的值为非零,当您使用请求创建匹配时,Game Center会邀请这些玩家进行匹配 . 不会进行自动匹配,并且会忽略GKMatchRequest maxPlayers和minPlayers属性 . ”
GKMatchmaker也是如此,但不适用于GKTurnBasedMatch!对于GKTurnBasedMatch,如果在playersToInvite属性中提供了一个playerId数组,则不会忽略maxPlayers和minPlayers属性,并且Game Center会使用随机播放器填充额外的空格 .
以下代码可以解决问题:
而这个故事的寓意是:有时最好不要RTFM!