代码之家  ›  专栏  ›  技术社区  ›  user2747112

结束与下一位参与者的对话,它是如何工作的?

  •  2
  • user2747112  · 技术社区  · 11 年前

    我正在制作 转向游戏 对于带有游戏中心的iOS,每场比赛有2名参与者。我想对每个回合都实行时间限制,这样玩家就不必永远等待另一个玩家完成回合。我尝试过:

    currentMatch endTurnWithNextParticipants:[[NSArray alloc] initWithObjects:nextParticipant,nil] turnTimeout:GKTurnTimeoutDefault matchData:data completionHandler:^(NSError *error) 
    

    但什么都没发生,球员还有很长一段时间要轮到他们,所以我显然错过了一些东西。

    达到时限后会发生什么?如何 gamecenter 处理这个,我应该在哪里处理这个?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Woodstock    11 年前

    该方法会更新存储在Game Center上的当前比赛的数据。

    根据苹果文档:

    如果下一个要行动的玩家没有在指定的时间间隔内轮到他们,那么阵列中的下一个玩家会收到行动通知。这个过程一直持续到一名玩家轮空或通知列表中的最后一名玩家。 当调用此方法时,它会创建一个新的后台任务来处理请求。然后该方法将控制权返回到您的游戏。稍后,当任务完成时,Game Kit会调用您的完成处理程序。请记住,除了最初用于调用方法的线程之外,还可以在其他线程上调用完成处理程序。这意味着您的块中的代码需要是线程安全的。

    我认为你也需要以程序的方式结束球员的比赛。