GKTurnBasedMatch不会晋级下一位玩家

时间:2015-11-27 18:11:26

标签: ios game-center gamekit gkturnbasedmatch

所以我的比赛有两名球员。当玩家1创建一个新的匹配时,我使用endTurnWithNextParticipants方法并为nextParticipants提供GKTurnBasedMatch的参与者数组属性,该属性有两个参与者。

但是在播放器1设备上,它一直在说轮到你了。和玩家2的设备一样,他们说#34;他们轮到了#34;。

- (void)endTurnWithNextParticipants:(NSArray<GKTurnBasedParticipant *> *)nextParticipants
                        turnTimeout:(NSTimeInterval)timeout
                          matchData:(NSData *)matchData
                  completionHandler:(void (^)(NSError *error))completionHandler

有什么建议吗?

编辑:

以下是我使用endTurnWithNextParticipants的方法。 currentTurnBasedMatch是GKTurnBasedMatch的一个实例。我确实验证了实例确实包含两个参与者(播放器1和2)。并且完成没有任何错误。

[self.currentTurnBasedMatch endTurnWithNextParticipants:self.currentTurnBasedMatch.participants turnTimeout:GKTurnTimeoutDefault matchData:data completionHandler:^(NSError * _Nullable error) {
    MyNSLogSys2O(@"completion error:", error);  //default 1 week timeout
}];

1 个答案:

答案 0 :(得分:2)

我在这里看到两个问题:

首先,您重新使用已经存储在匹配中的数组。这是一个不可变的数组,只是简单地将它传回endTurnWithNextParticipants会导致各种奇怪的行为,这些行为有时会起作用,但在大多数情况下会导致非常奇怪的问题。我自己学到了很多东西:GameCenter: endTurnWithNextParticipants not advancing。创建一个全新的数组并将参与者复制到其中。将新数组传递到endTurnWithNextParticipants

其次,我没有看到你试图调整阵列中参与者的顺序,表明你想要换到下一个玩家。 (无论如何,通过在比赛中重复使用不可变数组,它无法正常工作,但仍需要完成)如果你只有两个玩家,你可以使用我在上面链接中使用的方法。如果你有两个以上的玩家,你需要做一些类似于这个问题的接受答案:Game Center's Auto-match and endTurnWithNextParticipants