2

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

行为是这样的:

  1. 调用了 didFindMatch

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

  3. didChangeState 从未被调用

  4. 在很长一段时间后,收到断开连接的播放器。

有没有人可以解决这个问题?

谢谢!

4

1 回答 1

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];
    }
}
于 2012-07-12T02:59:47.987 回答