ios - 回合制配对在 iOS 10 中不起作用

标签 ios objective-c gamekit gkturnbasedmatch

我的游戏在 iOS 10 之前运行良好。现在,每个使用 iOS 10 的人都无法邀请他们想要的人和他们一起玩。

当用户说他们想玩多人游戏时,我会创建一个 GKMatchRequest,如下所示:

GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 4;
request.defaultNumberOfPlayers = 2;

我使用 GKTurnBasedMatchmakerViewController 来处理邀请等。用户看到一个界面,可以让他们更改比赛中的玩家数量并邀请玩家。假设他们只想要 2 个玩家,所以他们离开了,他们想和他们的 friend 一起玩。因此,他们使用该界面向他们的 friend 发送邀请。结果是,didFindMatch 在我的委托(delegate)上被调用,其中包含一个有 4 个参与者的 GKMatch。它应该只有2个!第一个参与者是本地玩家,其他 3 个参与者的状态为“匹配”。因此,他们的 friend 甚至不在列表中。有人对解决此问题有任何建议吗?同样的代码在 iOS 10 之前的 iOS 版本中运行良好。

最佳答案

看来在 IOS10 中,defaultNumberOfPlayers 没有被接受。

请记住,GKTurnBasedMatch 在给定的比赛中有三种类型的玩家:

  • 创建匹配的发起者
  • 被特别邀请参加比赛的球员
  • 自动匹配到比赛中的玩家

如果您查看比赛中所有 4 名玩家的玩家状态(使用您的示例),我想您会看到以下结果

  1. 活跃(发起人)
  2. 已邀请(您邀请的 1 人)
  3. 匹配
  4. 匹配

如果是这样,则表明 defaultNumberOfPlayers 被忽略,并且创建的比赛最多有 4 名球员(1 名发起人、1 名受邀者和 2 名自动比赛名额)。

解决方法似乎是在创建匹配时将 maxNumberOfPlayers 设置为所需的上限,在本例中为 2。

关于ios - 回合制配对在 iOS 10 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41916413/

相关文章:

ios - 如何在 SWIFT 中使用 SpriteKit 脉冲 Sprite

iphone - UIView 可以知道它何时出现在屏幕上吗

iphone - GameKit在设备屏幕关闭或处于后台时保持连接状态

swift - receiveData :fromPeer:inSession:context: in swift? 的正确签名是什么

objective-c - 获取创建对象的时间

iOS EXC_BAD_ACCESS crash 如何读取错误

objective-c - 卡恩算法和可达性

ios - 在 ASTableNode 中的 ASCellNode 之间和周围添加间距的最佳方法?

ios - 缩放时在核心图中调整大小和重新放置注释

objective-c - 明确回答 playerToInvite 的用途