1

我正在开发一款基于回合制的 Game Kit 游戏。我正在为玩家参与的比赛制作自定义 UI。我使用

loadMatchesWithCompletionHandler:

有一个用例,用户正在比赛中,轮不到他们,他们想退出并且不再在游戏列表中看到该比赛。我的代码调用

participantQuitOutOfTurnWithOutcome:withCompletionHandler: 

并从表视图中删除该行。

在这一点上,其他玩家获得了转牌并看到他们的对手已经退出

match.remoteParticipant.matchOutcome == GKTurnBasedMatchOutcomeQuit

所以他们在游戏结束时打电话给

endMatchInTurnWithMatchData:completionHandler:

问题是游戏仍然存在于游戏中心。所以打电话

loadMatchesWithCompletionHandler: 

在第一个玩家的应用程序上会将其拉回并显示在游戏表中。

我能想到的唯一解决方案是从表中保存匹配的匹配 ID 和黑名单。似乎有点笨拙。

似乎没有用于此的 API。即退出并删除匹配我的匹配列表。有没有更好的方法来仅使用 Game Center API 来处理这种情况?

4

1 回答 1

2

我相信您需要将每个参与者的 matchOutcome 属性设置为 GKTurnBasedMatchOutcomeNone 以外的其他内容,然后才能删除匹配项。从文档:

调用此方法结束所有玩家的比赛。此方法只能由>当前参与者调用。在您的游戏调用此方法之前,必须将存储在参与者属性中的每个 >participant 对象的 matchOutcome 属性设置为 GKTurnBasedMatchOutcomeNone 以外的值。

于 2013-07-23T03:03:33.427 回答