首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从GKTurnBasedMatchMakerViewController检索GKTurnBasedMatch对象- Swift 4

从GKTurnBasedMatchMakerViewController检索GKTurnBasedMatch对象- Swift 4
EN

Stack Overflow用户
提问于 2019-04-18 21:37:45
回答 1查看 63关注 0票数 1

我正在尝试实现一个基于回合的多人游戏(双人战略棋盘游戏)。我已经成功地验证了本地播放器并提供了GKTurnBasedMatchmakerViewController (标准接口)。

我对如何检索玩家选择的GKTurnBasedMatch对象(如果可用)感到有点困惑。对于此目的,GKTurnBasedMatchmakerViewControllerDelegate协议的这种方法似乎非常合理,但显然它已被弃用。

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

如有任何提示,我们将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2020-04-06 20:36:27

我同意,实现这一点的委托函数是有用的。

我的解决方案是在呈现matchmaker视图控制器的委托中注册一个侦听器,让我们将其称为mainVC。MainVC应符合GKLocalPlayerListener协议。

代码语言:javascript
复制
// In mainVC
GKLocalPlayer.localPlayer().registerListener(self)

然后,当玩家在标准界面中选择一场比赛时,将调用以下函数,您必须在mainVC中实现该函数:

代码语言:javascript
复制
// 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函数是用已发生的事件更新匹配的标准方法。它在以下情况下被调用:

  • 当前回合有一个与之关联的超时,该回合即将到期。
  • Player接受了其他播放机的邀请。
  • Turn已传递给其他播放机。在本例中,didBecomeActive为false。
  • 匹配数据由另一个player.
  • Player保存收到提醒。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55747247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档