我正在为 iOS 制作一个带有游戏中心的回合制游戏,每场比赛 2 名参与者。我想对每一回合实现时间限制,这样玩家就不必永远等待另一个玩家完成回合。我试过了:
currentMatch endTurnWithNextParticipants:[[NSArray alloc] initWithObjects:nextParticipant,nil] turnTimeout:GKTurnTimeoutDefault matchData:data completionHandler:^(NSError *error)
但是什么都没有发生,玩家仍然需要永远轮到他们,所以我显然在这里遗漏了一些东西。
达到时间限制后会发生什么? gamecenter 如何处理这个问题,我应该在哪里处理这个问题?
Best Answer-推荐答案 strong>
该方法会为当前比赛更新存储在 Game Center 上的数据。
根据苹果文档:
如果下一个要行动的玩家在指定的时间间隔内没有轮到他们,则数组中的下一个玩家会收到行动通知。这个过程一直持续到玩家轮到或通知列表中的最后一个玩家。
调用此方法时,它会创建一个新的后台任务来处理请求。然后该方法将控制权返回给您的游戏。稍后,当任务完成时,Game Kit 会调用您的完成处理程序。请记住,完成处理程序可能会在与最初用于调用该方法的线程不同的线程上调用。这意味着你的代码块中的代码需要是线程安全的。
我认为您还需要以编程方式结束播放器。
关于ios - endturnwithnextparticipants,它是如何工作的?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/18615808/
|