ゲーム セッションが進行中で、他のプレイヤーとデータを通信できないときに、ローカル プレイヤーの切断メッセージを取得するにはどうすればよいでしょうか。「このメソッドは、接続が失敗するたびに通知します」というドキュメントには何もないので、私は少し途方に暮れています.
このコードのチャンクが機能することを期待して使用しようとしていましたが、無駄です。「私たちは切断されています。」メッセージがトリガーされることはありません。
- (void)match:(GKMatch *)theMatch player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state {
if (self.match != theMatch) return;
switch (state) {
case GKPlayerStateDisconnected:
//disconnected
NSLog(@"player status changed: disconnected");
matchStarted = NO;
GKLocalPlayer *player = [GKLocalPlayer localPlayer];
if ([playerID isEqualToString:player.playerID]) {
// We have been disconnected
NSLog(@"We're disconnected.");
}
if ([delegate respondsToSelector:@selector(matchEnded)]) {
[delegate matchEnded];
}
break;
}
}
私が見つけた他の唯一の行は、通信できないことを示している可能性があるのは、実際に次のようなデータを送信したときです。
- (void)sendRandomMatchData:(NSData *)data {
GKMatch *match = [GCHelper sharedInstance].match;
BOOL success = [match sendDataToAllPlayers:data
withDataMode:GKMatchSendDataReliable
error:nil];
if (!success) {
[self matchEnded];
}
}
ただし、相手が切断されてメッセージを送信できなくなった場合も、「成功」は偽になると思います。
私は非常に厳格なゲーム ロジックを持っています。誰かが切断された場合、試合を続けることができず、負けたことを知らせる必要があります。
どんな助けでも大歓迎です。