1

カスタム マッチメーカー ビュー コントローラーを実装し、GKMatchmaker を使用して、プログラムで 2 人のプレイヤーの一致を見つけます。

[[GKMatchmaker sharedMatchmaker] findMatchForRequest:request withCompletionHandler:^(GKMatch *thisMatch, NSError *error)

私のカスタム マッチメーカー ビュー コントローラーには、プレーヤーが [[GKMatchmaker sharedMatchmaker] cancel] を介してマッチをキャンセルできるボタンがあります。

プレーヤー 1 が試合をキャンセルすると、プレーヤー 2 との GKMatch が既に作成されている場合があります。プレーヤー 1 が試合をキャンセルしたことをプレーヤー 2 に通知し、別の試合の検索を開始するにはどうすればよいですか?

答えは、デリゲート メソッド matchmakerViewControllerWasCancelled が呼び出される直前の GKMatchmakerViewController クラスとコードにあると思います。どうすればこれを入手できるか知っている人はいますか?

4

1 に答える 1

1

これをいじってみたところ、GKMatch が作成された後、プレーヤーが接続される前に、プレーヤーが試合をキャンセルしたときに、次の関数の GKPlayerStateDisconnected が呼び出されるまでに時間がかかることがわかりました。

- (void)match:(GKMatch *)theMatch player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state

GKMatch が作成されたがプレーヤーが接続されていない場合、約 15 秒後に再び findMatchForRequest 関数を呼び出すことで、これを回避しました。

人々がよりエレガントなソリューションを持っているかどうか知りたいです。

于 2013-04-08T08:15:20.363 に答える