带有playerGroup的iPhone GameCenter邀请

我开发了一款使用GameCenter的iPhone应用程序。为了支持我的游戏的不同级别,我将playerGroup设置在
GKMatchRequest
类中。如果通过自动匹配制作过程开始匹配,则两个用户都知道playerGroup,但是如果使用了邀请过程,则被邀请者不知道playerGroup。 我试图在方法中读取playerGroup
-   (void)matchmakerViewController:(GKMatchmakerViewController *)viewController didFindMatch:(GKMatch *)match
通过使用
[viewController matchRequest].playerGroup
,但属性playerGroup总是返回0,而不是右边的玩家组。 有谁知道如何解决这个问题。我需要知道playerGroup加载正确的级别。 非常感谢您的帮助     
已邀请:
据我所知,这是Game Center的内置限制。我一直在努力解决这个问题,并在包括Apples devforums在内的几个论坛上提出了问题,没有任何回应。我已经向Apple写了一个错误报告,我建议你也这样做。 作为我自己的游戏中的一种解决方法,我有几个不同的规则集供玩家选择,玩家必须共享相同的多人游戏规则才能工作,我在游戏实际开始后进行“双重检查”以确保每个人是有相同的规则:以防有人被邀请并使用错误的规则。 我做的是,一旦游戏开始(您应该在GKMatchMakerViewControllerDelegate的didFindMatch方法和match:player:didChangeState:在GKMatchDelegate中检测到)我让玩家进入游戏,然后发送包含他们对所有其他玩家使用的规则。当他们收到这些数据时,他们会根据自己的规则进行匹配,如果有人使用了错误的规则,游戏会发出警报并断开匹配。 它有点难看,很明显Apple应该实现一种方法,在邀请函初始化时为GKMatchMakerViewController设置GKMatchRequest。但至少它有效。     
我解决了同样的问题。作为一种解决方法,我通过GKMatch对象发送与所有相关游戏定制信息的握手。我使用GKMatchSendDataReliable DataMode发送数据,因此握手不会失败。 在客户收集所有信息之后,创建实际游戏逻辑并在其基础上启动。     
您可以像这样查看匹配请求的玩家组。
func player(player: GKPlayer, didAcceptInvite inviteToAccept: GKInvite)    {
    if inviteToAccept.playerGroup == 0 || inviteToAccept.playerGroup == myPlayerGroup  {
        inviteAccepted()
    }
    else {
        // TO SOMETHING
        myPlayerGroup = inviteToAccept.playerGroup
        inviteAccepted()
    }
    

要回复问题请先登录注册