Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何从GKTurnBasedMatch检索playerGroup属性?_Iphone_Ios_Xcode_Mobile_Gamekit - Fatal编程技术网

Iphone 如何从GKTurnBasedMatch检索playerGroup属性?

Iphone 如何从GKTurnBasedMatch检索playerGroup属性?,iphone,ios,xcode,mobile,gamekit,Iphone,Ios,Xcode,Mobile,Gamekit,我的游戏中有三个不同的关卡供用户选择。我在GKMatchRequest的playerGroup属性中保存了玩家选择的等级。比赛完成后,我如何从GKTurnBasedMatch中检索playerGroup,或者是否有其他方法跟踪比赛的比赛级别?创建GKMatchRequest后,必须调用findMatchForRequest。在findMatchForRequest的完成处理程序中,您可以将游戏级别存储在新比赛的matchData属性中。我使用GKTurnBasedMatchmakerViewCo

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

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

我使用GKTurnBasedMatchmakerViewController来显示自动/邀请UI。创建GKBMatchRequest时,我向GKBMVC添加一个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:
delegate方法中,我读取
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
中,但有时使用matchmaking视图控制器传递它更方便