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

Tim*_*ers 8 iphone cocoa-touch gamekit ios

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

有时,完成邀请的玩家会陷入"等待......"循环,并且无法根据他的邀请结束交易.

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

有什么可能缺失的线索?我被文档蒙蔽了眼睛.

Fil*_*lic 1

有时,当两名玩家之间的比赛开始时,其中一名玩家可能尚未处于连接状态。在实际开始游戏之前,您应该检查是否有更多玩家需要连接。如果大于0,则不开始游戏,而是等待玩家连接,只有当该玩家连接时才开始游戏。

因此,在设置游戏的方法中,代码将类似于以下内容:

if (currentMatch.expectedPlayerCount) {
    waiting = YES;
}
Run Code Online (Sandbox Code Playgroud)

您将实现这个委托方法:

- (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
    }
}
Run Code Online (Sandbox Code Playgroud)