在游戏套件中协商2场比赛时遇到麻烦

时间:2011-03-31 22:35:29

标签: iphone cocoa-touch ios gamekit

我得到了一些我无法从GameKit解码的行为。

有时已完成邀请的玩家陷入“等待......”循环,无法根据邀请结束交易。

我认为它与多任务处理和邀请处理程序有关......似乎如果被邀请者的应用程序从头开始,则可以正确接受邀请。但这种机制对我来说并不那么透明。

有关可能遗漏的内容的任何线索?我已经被文档蒙蔽了。

1 个答案:

答案 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
    }
}