2011-04-03 96 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