我有一个基于回合的游戏,当有人不合时宜地从Game Center输掉游戏时,我试图结束游戏。我无法弄清楚当玩家轮流按下“没收”按钮时该怎么称呼。我要实施,
participantQuitOutOfTurnWithOutcome:withCompletionHandler:
但不知道将其放在哪里并调用它。我试图把它放在这里:
-(void)handleTurnEventForMatch:(GKTurnBasedMatch *)match
和
- (void)turnBasedMatchmakerViewController:(GKTurnBasedMatchmakerViewController *)viewController playerQuitForMatch:(GKTurnBasedMatch *)match
但是当玩家不按顺序按下“没收”按钮时,似乎都没有被调用。我想念什么?
[一旦确定用户要放弃,您都将要呼叫participantQuitOutOfTurnWithOutcome:withCompletionHandler:
-因此,在您的情况下,当他们点击“放弃”按钮时(可能在确认时单击“是”之后。)>
在那种情况下,您会想要这样的东西:
-(void)playerChoseToForfeit { [self.match participantQuitOutOfTurnWithOutcome:GKTurnBasedMatchOutcomeQuit withCompletionHandler:^(NSError *error) { //tell the user that they've forfeited (or not, if there's an error!) }]; }
基本上,它将在您自己的方法中,而不是(不一定)委托方法。
问了这个问题五年后,Apple仍未更新GKLocalPlayerListener
协议来处理这种情况。我也尝试仅依靠Game Center MatchMaker视图控制器(GC MMVC),遇到了您遇到的相同问题,如果用户不在轮到GC MMVC
的时候就放弃了,那么比赛就是处于冲突状态:退出者“完成”,其余玩家“活跃”。