0

我正在尝试创建一个简单的基于回合的 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 回调似乎是显而易见的解决方案,但它已被弃用

4

1 回答 1

2

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

首先查看与此相关的其他一些已回答问题,以了解您可能遇到的问题。显然整个GKLocalPlayerListener协议给很多人带来了麻烦:关于 GTTurnBasedMatch 的另一个问题

无论如何:

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

如果看起来苹果可能选择不让GKTurnbasedMatchmakerViewControllerDelegate处理任何实际的配对方法;相反,他们将这些责任赋予了GKTurnBasedEventListener协议(在 下GKLocalPlayerListener)。

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

  1. 让你的主VC遵守GKLocalPlayerListener协议。
  2. 通过以下方式注册您的 VC[[GKLocalPlayer localPlayer] registerListener:self];
  3. - (void)player:(GKPlayer *)player receivedTurnEventForMatch:(GKTurnBasedMatch *)match didBecomeActive:(BOOL)didBecomeActiveGKLocalPlayerListener协议中实现

当你开始一个新游戏时,这个函数应该会触发。

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

于 2017-12-17T05:14:24.357 回答