GKTurnBasedMatchmaker是如何使用的?

时间:2017-12-05 02:23:11

标签: ios swift gamekit gkmatchmaker

我正在尝试创建一个简单的回合制2人游戏,但我很难理解如何使用GKTurnBasedMatchmaker

这是我到目前为止的步骤:

  • 验证本地播放器
  • 使我的视图控制器成为GKTurnbasedMatchmakerViewControllerDelegate
  • 如下所示展示配对视图控制器:

    self.match.minPlayers = 2;
    self.match.maxPlayers = 2;
    self.match.defaultNumberOfPlayers = 2;
    
    
    let mmVC = GKTurnBasedMatchmakerViewController(matchRequest: match);
    mmVC.turnBasedMatchmakerDelegate = self;
    self.view?.window?.rootViewController?.present(mmVC, animated: true, completion: nil);
    

我现在不知道在此之后该怎么做。

如何判断matchmakerViewController是否成功找到匹配项并且我应该转换到游戏?

didFindMatch回调似乎是一个明显的解决方案,但已被弃用

1 个答案:

答案 0 :(得分:2)

我也遇到了GKTurnBasedMatch的问题。但我可以帮助你向前迈出几步。

首先看一下与此相关的一些其他问题,以解决您可能遇到的问题。显然,整个GKLocalPlayerListener协议给很多人带来了麻烦:Another question about GTTurnBasedMatch

反正:

GKTurnbasedMatchmakerViewControllerDelegate协议现在只有两个与之关联的方法。有一个用于取消VC,另一个用于处理错误。

如果看起来Apple可能选择不让GKTurnbasedMatchmakerViewControllerDelegate处理任何实际的配对方法;他们将这些责任交给GKTurnBasedEventListener协议(GKLocalPlayerListener下)。

因此,在完成上述操作后,请务必执行以下操作:

  1. 让主要VC遵守GKLocalPlayerListener协议。
  2. 通过[[GKLocalPlayer localPlayer] registerListener:self];
  3. 注册您的VC
  4. - (void)player:(GKPlayer *)player receivedTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActive协议
  5. 实施GKLocalPlayerListener

    当你开始一个新游戏时,这个功能应该开启。

    不幸的是,我仍在努力克服我用GK遇到的其他障碍,祝你好运。