2

自動対戦と GKMatchmakerViewController を使用して 2 人のプレイヤー間の接続を確立できません。

動作は次のとおりです。

  1. didFindMatch が呼び出されます

  2. expectedPlayerCount はゼロではありません (常に 1)

  3. didChangeState が呼び出されることはありません

  4. プレーヤーが切断されたのを長期間受信した後。

誰でもこの問題の解決策を持っていますか?

ありがとう!

4

1 に答える 1

0

正しい数のプレーヤーを接続するには、GKMatchRequest適切にセットアップしてください。

この例では、2 人のプレーヤーが接続されている場合にのみ機能するゲームがあるため、最小および最大プレーヤー数を 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 に答える