我正在尝试实施回合制多人游戏(2人策略棋盘游戏)。我设法对本地播放器进行了身份验证,并提出了GKTurnBasedMatchmakerViewController(标准接口)。
我对如何检索播放器选择的GKTurnBasedMatch对象(如果可用)感到困惑。为此目的,GKTurnBasedMatchmakerViewControllerDelegate协议的此方法似乎非常明智,但显然已弃用。
func turnBasedMatchmakerViewController(_ viewController: GKTurnBasedMatchmakerViewController, didFind match: GKTurnBasedMatch)
任何提示将不胜感激!
我同意,用于实现此目标的委托功能非常有用。
我的解决方案是在提供媒人视图控制器的委托中注册一个侦听器,我们称其为mainVC。 MainVC应该符合GKLocalPlayerListener协议。
// In mainVC
GKLocalPlayer.localPlayer().registerListener(self)
然后,当播放器在标准界面中选择一个匹配项时,将调用以下函数,必须在mainVC中实现:
// in mainVC
func player(player: GKPlayer, receivedTurnEventForMatch match: GKTurnBasedMatch, didBecomeActive: Bool) {
// Dismiss the turnBasedMatchmakerViewController standard interface
// Load your match using the match object passed above
}
在此功能中,关闭与玩家匹配的标准界面,然后使用segue或其他方式加载游戏。
[receivedTurnEventForMatch函数是使用发生的事件更新您的比赛的标准方法。在以下情况下被调用: