【发布时间】:2012-02-23 09:04:57
【问题描述】:
我正在开发一款在线多人游戏,但我在处理 Apple 文档时遇到了困难。 (我已经尝试了 Ray Wenderlichs Part 1 和 part 2 的这些教程,但它们不起作用(匹配永远不会开始,因为邀请设备永远不会收到匹配接受)。
由于这个主题很广泛,我将创建一个问题,然后在必要时创建另一个关于 SO 的问题。
我想创建一个在线多人游戏,让用户可以邀请 1 到 3 个人。所以,这将是一场 2 到 4 人的比赛。游戏不是基于回合制的。它是实时的,用户之间传输的数据最少。
让我们从基本的东西开始。
1) 我做的第一件事是创建一个通知
if (self.gameCenterAvailable) {
NSNotificationCenter *nc =
[NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(authenticationChanged)
name:GKPlayerAuthenticationDidChangeNotificationName
object:nil];
}
通知更改时通知我。发生这种情况时,authenticationChanged 方法将触发...这里是
- (void)authenticationChanged {
GKMatchmaker sharedMatchmaker].inviteHandler = ^(GKInvite *acceptedInvite, NSArray *playersToInvite) {
// Insert application-specific code here to clean up any games in progress.
if (acceptedInvite)
{
GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithInvite:acceptedInvite] autorelease];
mmvc.matchmakerDelegate = self;
[self presentModalViewController:mmvc animated:YES];
}
else if (playersToInvite)
{
GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 4;
request.playersToInvite = playersToInvite;
GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;
[self presentModalViewController:mmvc animated:YES];
}
};
}
我从 Apple 获取了此代码。我的问题是这个。如果 Apple 说在用户通过身份验证后运行此代码,为什么它要检查邀请或用户邀请?据我所知,尚未邀请用户。除非当时没有执行代码,对吧?它只会留在内存中等待被调用,当邀请完成时,对吗?
如果是这样,我现在创建一个比赛邀请
[self dismissModalViewControllerAnimated:NO];
GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = minPlayers;
request.maxPlayers = maxPlayers;
request.playersToInvite = self.pendingPlayersToInvite;
GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;
[self presentModalViewController:mmvc animated:YES];
我选择邀请的所有用户都会看到一个窗口。假设第一个在邀请上点击接受。我的应用会触发哪种方法,如何获取用户身份以及如何知道是否所有用户都接受了?
谢谢。
【问题讨论】:
标签: iphone ios game-center