GKMatchmakerViewController

GKMatchmakerViewController

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

行为是这样的:

  • didFindMatch称为
  • ExpectedPlayerCount不为零(总是1)
  • didChangeState从不称为
  • 在延长的时间之后,会收到玩家断开连接的提示。

  • 有谁能解决这个问题?

    谢谢!

    最佳答案

    为了获得正确数量的玩家连接,请确保正确设置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;
    当然,您必须设置此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];
        }
    }
    

    07-25 20:53