- (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match
{
self.myMatch = match;
NSLog(@"%d",[[self.myMatch playerIDs]count]);
}
但是我的控制台返回0。它不应该返回2吗?
可能是您实际上没有连接它们吗?
您实际上使用的是GKMatchmaker
和GKMatchmakerViewController
吗?
在测试中,您确定您使用的是两个不同的游戏中心帐户?
恐怕我对游戏中心系统不熟悉。
GKMatchmaker返回您的比赛之前玩家之间的连接;在这个阶段,所有参与者都在相互联系的过程中。
playerIDs属性最初设置为已经连接到比赛的玩家数量;数组可能为空。每当有玩家连接到比赛时,该玩家的玩家标识符就会添加到数组中。
另外,某些播放器可能无法连接(我没有测试过这种情况,所以我不知道是否返回错误)
您正在寻找的是GKMatch.expectedPlayerCount
每当玩家连接到比赛时,此属性的值都会减小。当其值达到零时,将连接所有预期的玩家,您的游戏就可以开始比赛。
[我也怀疑GKMatch.playerIDs
不包括玩家;即,您可能会在连接后立即看到ExpectedPlayerCount = 1。
我不确定GameKit如何处理线程。