【问题标题】:How to retrieve playerGroup attribute from GKTurnBasedMatch?如何从 GKTurnBasedMatch 中检索 playerGroup 属性?
【发布时间】:2012-04-25 14:53:44
【问题描述】:

我的游戏中有三个不同的级别可供用户选择。我已将玩家选择的关卡保存在 GKMatchRequest 的 playerGroup 属性中。比赛完成后,我如何从 GKTurnBasedMatch 中检索 playerGroup,或者是否有其他方法来跟踪比赛是哪个游戏级别?

【问题讨论】:

    标签: iphone ios xcode mobile gamekit


    【解决方案1】:

    创建 GKMatchRequest 后,您必须调用 findMatchForRequest。在 findMatchForRequest 的完成处理程序中,您可以将游戏的关卡存储在新匹配的 matchData 属性中。

    【讨论】:

      【解决方案2】:

      我使用 GKTurnBasedMatchmakerViewController 来呈现自动匹配/邀请 UI。创建 GKMatchRequest 时,我向 GKTBMVC 添加了一个与 ObjC 相关的 playerGroup 值(打包到一个 NSNumber 中),如下所示:

      GKMatchRequest *request = [[GKMatchRequest alloc] init];
      request.playerGroup = somePlayerGroup;
      GKTurnBasedMatchmakerViewController *mmvc = [[GKTurnBasedMatchmakerViewController alloc] initWithMatchRequest:request];
      objc_setAssociatedObject(mmvc,
                               &kPlayerGroupKey,
                               [NSNumber numberWithInteger:request.playerGroup],
                               OBJC_ASSOCIATION_RETAIN);
      
      [myViewController presentViewController:mmvc
                                     animated:YES
                                   completion:nil];
      

      然后在turnBasedMatchmakerViewController:didFindMatch:委托方法中,我读取playerGroup的值以了解我们需要建立或加入什么样的匹配:

      - (void)turnBasedMatchmakerViewController:(GKTurnBasedMatchmakerViewController *)mmvc didFindMatch:(GKTurnBasedMatch *)match
      {
           [myViewController dismissViewControllerAnimated:YES
                                                completion:^{
                                                    NSNumber *n = objc_getAssociatedObject(mmvc, &kPlayerGroupKey);
                                                    NSInteger playerGroup = [n integerValue];
                                                    [self switchToMatch:match matchKind:playerGroup];
                                                }];
      }
      

      当然,你可以在创建新匹配时将playerGroup存储在match.matchData中,但有时用匹配视图控制器传递会更方便。

      【讨论】:

        猜你喜欢
        • 2021-10-05
        • 1970-01-01
        • 2016-03-08
        • 1970-01-01
        • 1970-01-01
        • 2011-01-18
        • 1970-01-01
        • 1970-01-01
        • 2011-08-03
        相关资源
        最近更新 更多