GameCenter GKMatchmakerViewController自动匹配不起作用,expectedPlayerCount总是1,解决方案?

时间:2012-07-12 02:53:50

标签: iphone ios game-center multiplayer

我无法使用自动匹配和GKMatchmakerViewController在两个玩家之间建立连接。

行为是:

  1. didFindMatch被称为

  2. expectedPlayerCount不为零(始终为1)

  3. didChangeState永远不会被调用

  4. 经过一段时间后,播放器被断开了。

  5. 有没有人能解决这个问题?

    谢谢!

1 个答案:

答案 0 :(得分:0)

为了获得正确数量的玩家连接,请务必正确设置GKMatchRequest

在这个例子中,我有一个只有连接了两个玩家才有效的游戏,所以我设置了最小值和最小值。最多球员数到2:

GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;

GKMatchmakerViewController* mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;

然后,您注意到的一切都按预期工作。


修改

再次阅读您的问题后,请确保您保留了GKMatch对象:

-(void) matchmakerViewController:(GKMatchmakerViewController*)viewController didFindMatch:(GKMatch*)match;

当然,您必须设置此匹配对象的委托:

//Done!
-(void) matchmakerViewController:(GKMatchmakerViewController*)viewController didFindMatch:(GKMatch*)match{
    [self dismissModalViewController];
    [self setCurrentMatch:match];

    match.delegate  = self;

    if (!matchStarted && match.expectedPlayerCount == 0){
        matchStarted = YES;
        [delegate onMatchStart];
        self.handlerVoice = [OnlineHandlerVoice handlerWithMatch:currentMatch];
    }
}