2 人のプレーヤーが同じシーンにいる場合、それらを招待することができ、受け入れたときにプレーヤー リストに追加されます。
私が機能していないことと、その方法がわからないのは、1 人のプレーヤーがアプリになく、他のプレーヤーがCCScene
s の 1 つから招待要求を送信しているアプリにいるときに、適切なシーンをロードすることです。
これを行う方法があるかどうか、またはそれが最善の方法であるかどうかはわかりません。これについての私の考えは、プレイヤーを招待している人がいるシーンの名前を、招待ハンドラーを介して招待している人に送信したいということです。didFinishLaunchingWithOptions
それらがアプリにない場合は、何らかの方法でアプリケーションに情報を送信する必要があると思いますが、アプリにある場合は、他の場所でそれを処理する必要があります。私はどこでも検索してきましたが、何も見つかりませんでした。これを行う方法、またはそれを行うより良い方法を知っていれば、私はあなたの助けに大いに感謝します.
招待ハンドラーに使用するコードは次のとおりです。
[GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {
UIViewController *topLevelViewController = self.presentingViewController;
bool isInviter = NO;
if (acceptedInvite) {
isInviter = NO;
GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] autorelease];
mmvc.matchmakerDelegate = self;
if ([topLevelViewController modalViewController] != nil)
[topLevelViewController dismissModalViewControllerAnimated:NO];
[topLevelViewController presentModalViewController:mmvc animated:YES];
} else if (playersToInvite) {
isInviter = NO;
GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;
request.playersToInvite = playersToInvite;
GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;
if ([topLevelViewController modalViewController] != nil)
[topLevelViewController dismissModalViewControllerAnimated:NO];
[topLevelViewController presentModalViewController:mmvc animated:YES];
}
};