从GKTurnBasedMatchMakerViewController检索GKTurnBasedMatch对象-Swift 4

问题描述 投票:0回答:1

我正在尝试实施回合制多人游戏(2人策略棋盘游戏)。我设法对本地播放器进行了身份验证,并提出了GKTurnBasedMatchmakerViewController(标准接口)。

我对如何检索播放器选择的GKTurnBasedMatch对象(如果可用)感到困惑。为此目的,GKTurnBasedMatchmakerViewControllerDelegate协议的此方法似乎非常明智,但显然已弃用。

func turnBasedMatchmakerViewController(_ viewController: GKTurnBasedMatchmakerViewController, didFind match: GKTurnBasedMatch)

任何提示将不胜感激!

swift game-center gkturnbasedmatch
1个回答
0
投票

我同意,用于实现此目标的委托功能非常有用。

我的解决方案是在提供媒人视图控制器的委托中注册一个侦听器,我们称其为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函数是使用发生的事件更新您的比赛的标准方法。在以下情况下被调用:

  • 当前回合具有与之相关的超时,并且该回合为即将到期。
  • 玩家接受其他玩家的邀请。
  • Turn被传递给另一位玩家。在这种情况下,didBecomeActive为false。
  • 比赛数据被其他玩家保存。
  • 玩家收到提醒。
© www.soinside.com 2019 - 2024. All rights reserved.