我得到了一些我无法从GameKit解码的行为。
有时已完成邀请的玩家陷入“等待......”循环,无法根据邀请结束交易。
我认为它与多任务处理和邀请处理程序有关......似乎如果被邀请者的应用程序从头开始,则可以正确接受邀请。但这种机制对我来说并不那么透明。
有关可能遗漏的内容的任何线索?我已经被文档蒙蔽了。
答案 0 :(得分:1)
有时当两个玩家之间的比赛开始时,一个玩家可能还没有连接状态。在实际开始游戏之前,您应该检查是否需要更多玩家连接。如果它超过0,而不是开始游戏,则等待玩家连接,并且仅在连接该玩家时启动游戏。
因此代码在您设置游戏的方法中看起来像这样:
if (currentMatch.expectedPlayerCount) {
waiting = YES;
}
您将实现此委托方法:
- (void)match:(GKMatch *)match player:(NSString *)playerID didChangeState:(GKPlayerConnectionState)state
{
if (state == GKPlayerStateConnected) {
if (waiting) {
waiting = NO;
// start the game now
}
} else if (state == GKPlayerStateDisconnected) {
// handle disconnect
}
}