gpt4 book ai didi

iphone - 如何检测 GameKit 自动匹配失败

转载 作者:行者123 更新时间:2023-12-01 16:49:42 26 4
gpt4 key购买 nike

如何检测 GameKit 自动匹配是否失败?

等待 2 分钟后,即使没有找到自动匹配的玩家,也会调用 GKMatchmakerViewControllerDelegate matchmakerViewController:didFindMatch:。游戏中心的喇叭声甚至可以播放。我确信实际上没有找到任何玩家,因为这发生在 Game Center Sandbox 中,没有其他人可以访问我的应用程序。

当我尝试加载玩家*时,我收到一个错误,但必须有更好的方法来检查自动匹配失败,对吧?自动匹配失败时,有没有办法防止喇叭声凯旋?

*自动匹配失败时加载玩家显示错误:

[GKPlayer loadPlayersForIdentifiers:self.match.playerIDs withCompletionHandler:^(NSArray *players, NSError *error)
{
LOG_DEBUG(@"loadPlayersForIdentifiers completion handler called");
if (error != nil)
{
LOG_ERROR(@"Error loading player information: %@", error);
}
}];

这显示以下错误:

Error loading player information: Error Domain=GKErrorDomain Code=17 "The requested operations could not be completed because one or more parameters are invalid." UserInfo=0xb183a70 {NSLocalizedDescription=The requested operations could not be completed because one or more parameters are invalid.}



这是我用来调出 GameKit 比赛用户界面的代码:
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.defaultNumberOfPlayers = 2;

GKMatchmakerViewController *mmvc = [[GKMatchmakerViewController alloc] initWithMatchRequest:request];
mmvc.matchmakerDelegate = self;

[self presentViewController:mmvc animated:YES completion:nil];

对于完整的上下文,我的整个应用程序是开源的,主视图 Controller 在这里: https://github.com/jdimatteo/TeamRun/blob/master/TeamRun/TeamRun/TeamRunViewController.m

任何帮助是极大的赞赏!

最佳答案

即使没有找到玩家,自动匹配也会成功。第二个(以此类推)参与者将是具有 nil ID 的非 nil 对象,并代表 future 玩家匹配的占位符。如果无需将所有玩家都添加到游戏中就可以进行第一轮,这可以让游戏立即开始。

我想 loadPlayersWithIdentifiers 的错误是因为其中一些标识符是零。

您可以检查 participant.playerID == nil并且要么将其视为比赛尚未准备好,要么以任何对您的游戏有意义的方式处理它。

关于iphone - 如何检测 GameKit 自动匹配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17054866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com