8
我得到一些行爲,我無法從GameKit解碼。麻煩協商遊戲工具包中的兩名玩家匹配
有時已經完成邀請的玩家卡在'等待...'循環中,並且無法在他的邀請中結束交易。
我相信它與多任務和邀請處理程序有關...似乎如果被邀請者的應用程序從頭開始,那麼邀請可以被正確接受。但是這種機制對我來說並不那麼透明。
任何線索可能會丟失什麼?我已經被文檔蒙上了一層陰影。
我得到一些行爲,我無法從GameKit解碼。麻煩協商遊戲工具包中的兩名玩家匹配
有時已經完成邀請的玩家卡在'等待...'循環中,並且無法在他的邀請中結束交易。
我相信它與多任務和邀請處理程序有關...似乎如果被邀請者的應用程序從頭開始,那麼邀請可以被正確接受。但是這種機制對我來說並不那麼透明。
任何線索可能會丟失什麼?我已經被文檔蒙上了一層陰影。
有時當兩名球員之間的比賽開始時,有可能一名球員還沒有連接狀態。您應該檢查是否有更多的玩家在實際開始遊戲之前需要連接。如果超過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
}
}
我面臨着同樣的問題太..通常應用程序需要一個「新鮮開始」,它再次運作... – xuanweng 2011-04-01 07:57:03
xuanweng,我相信我找到了一個解決方案...它是在文檔中建議inviteHandler準備在authenticateLocalPlayerWithCompletionBlock完成塊。我已經將我的prepareInviteHandler設置爲在if(error == nil)塊中調用。在這個if/then語句(在文檔代碼中提供)之前,將調用準備好邀請處理程序似乎可以消除此問題。 – 2011-04-05 15:25:25
您應該提交此答案並接受您自己的答案以將問題標記爲已解決。 – 2011-09-13 15:38:32