自動対戦と GKMatchmakerViewController を使用して 2 人のプレイヤー間の接続を確立できません。
動作は次のとおりです。
didFindMatch が呼び出されます
expectedPlayerCount はゼロではありません (常に 1)
didChangeState が呼び出されることはありません
プレーヤーが切断されたのを長期間受信した後。
誰でもこの問題の解決策を持っていますか?
ありがとう!
自動対戦と GKMatchmakerViewController を使用して 2 人のプレイヤー間の接続を確立できません。
動作は次のとおりです。
didFindMatch が呼び出されます
expectedPlayerCount はゼロではありません (常に 1)
didChangeState が呼び出されることはありません
プレーヤーが切断されたのを長期間受信した後。
誰でもこの問題の解決策を持っていますか?
ありがとう!
正しい数のプレーヤーを接続するには、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];
}
}