4

ユーザーが GameKit を使用する iOS アプリのターン ベースのマッチで「順番に」終了する-(void)turnBasedMatchmakerViewController: (GKTurnBasedMatchmakerViewController *)viewController playerQuitForMatch:(GKTurnBasedMatch *)match;と、GKTurnBasedMatchmakerViewController でデリゲート メソッドが呼び出されます。ドキュメントによると、現在のプレーヤーの結果を設定し、次のように呼び出しますparticipantQuitInTurnWithOutcome:nextParticipant:matchData:completionHandler

しかし、プレーヤーが途中でやめたという情報は見つかりませんでした。それは私の番ではなく、マッチメーカー ビューコントローラーを終了したときです。そのためのデリゲート メソッドはないようです。驚いたことに、アプリのデバッグから、ターンが送信されていることがわかりました (現在、試合中の自分のターンではありませんが)。

誰でも動作と順番外の終了を処理する正しい方法を説明できますか.

4

3 に答える 3

2

このシナリオは次の方法で処理できます

-(void)handleTurnEventForMatch:(GKTurnBasedMatch *)match

参加者をループし、トリガー プレイヤーがローカル プレイヤーであり、その結果が「Quit」であり、彼が現在の参加者ではない場合 (これは別の場所で処理されます -turnBasedMatchmakerViewController:playerQuitForMatch:)、先に進んでゲームを終了しますターンの。

for (int i = 0; i < [match.participants count]; i++) 
{            
    GKTurnBasedParticipant *p = [match.participants objectAtIndex:i];

    if ([p.playerID isEqualToString:[GKLocalPlayer localPlayer].playerID])
    {
        // Found player

        if (p.matchOutcome == GKTurnBasedMatchOutcomeQuit)
        {
            // Player Quit... ignore current participants and end out of turn only for the other player
            if (![match.currentParticipant.playerID isEqualToString:p.playerID])
            {
                // not the current participant and he quit
                [match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit withCompletionHandler:nil];
                 break;
            }               
        }
    }
}
于 2012-07-08T21:24:26.320 に答える
0

試合の現在の参加者を確認し、それがあなたであるかどうかを確認できます。送信されたトラフィックに関しては、Game Center は他のすべてのプレイヤーにあなたが終了したことを通知する必要はありませんか?

于 2012-06-01T08:45:36.890 に答える
-1

実際に途中で終了する方法があります。

GKTurnBasedMatch の場合、次のように呼ばれます。

participantQuitOutOfTurnWithOutcome:withCompletionHandler:

turnBasedMatchmakerViewController:playerQuitForMatch: 関数が呼び出されたときに、GKTurnBaseMatchMakerViewControllerDelegate で呼び出すことができます。

こちらの公式ドキュメントをご覧ください

于 2012-06-08T03:42:35.627 に答える