2011-04-03 95 views
0
  • 我成功地做了一个配对的屏幕出现。
  • 我在我的iPhone和模拟器中运行我的游戏。
  • 在这两种情况下,我都使用不同的Game Center帐户登录。
  • 我参加了两场比赛的比赛画面。我按“现在玩”。两场比赛都开始寻找比赛。
  • 最后两场比赛找到一个匹配,并调用以下功能:

- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match 
{ 
    self.myMatch = match; 
    NSLog(@"%d",[[self.myMatch playerIDs]count]); 

} 

但我的控制台返回0。它不应该返回2呢?我的GKMatch没有玩家...?

回答

2

难道你不是真的连接它们吗?

你实际上使用GKMatchmaker和GKMatchmakerViewController吗?

在您的测试中,您确定您使用的是两个不同的游戏中心帐户?

恐怕我不熟悉游戏中心系统 - 但我已经添加了100点奖励,所以你可以希望得到答案!

+0

我很快就会用两个不同账号的iPhone进行检查,并会回复给您。并感谢赏金:) – Voldemort 2011-04-06 21:40:55

4

GKMatchmaker回报你一场比赛之前已经建立了连接;在这个阶段,所有的球员都在相互连接的过程中。

playerIDs属性初始设置为已经连接到比赛的球员数量;该数组可能是空的。每当玩家连接到比赛时,该玩家的玩家标识符就被添加到阵列中。

此外,一些玩家可能无法连接(我没有测试过这种情况,所以我不知道,如果你得到一个错误返回)

你在找什么是GKMatch.expectedPlayerCount

只要玩家连接到匹配项,该属性的值就会减少。当它的值达到零时,所有预期的玩家都会连接起来,并且你的游戏可以开始比赛。

我还怀疑GKMatch.playerIDs不包括播放器;即在连接后您可能会立即看到expectedPlayerCount = 1。

我不确定GameKit关于线程的功能。

+0

我会立即检查这个:) – Voldemort 2011-04-08 05:13:29

+0

非常有趣,它似乎* [self.myMatch expectedPlayerCount] *停留在1.因此,我想我真的没有设法连接两个球员,对不对?但这很奇怪,iPhone和模拟器都“找到了匹配”并关闭了配对视图,所以我预计它们已经连接在一起.....并确保我使用了两个不同的Game Center帐户。虽然我没有机会在两款iPhone上测试,但对此有所了解? – Voldemort 2011-04-08 05:21:02

+0

我想用一个“真正的”设备(我从来没有真正尝试过模拟器)。它也听起来像http://stackoverflow.com/questions/4337481/game-center-multiplayer-using-gkmatch-but-seems-cant-be-connected – 2011-04-12 01:56:48