我遇到了我的游戏中心代码并且已经进行了研究和研究,并且正在使用似乎是公认的标准方法。我无法看出问题出在哪里。
我正在写一个四人牌纸牌游戏,如果任何玩家退出,我希望他们被邀请回到游戏中。
场景是这样的:
比赛正在进行,所有球员都在比赛中。一名玩家退出游戏。指定的主机检测到断开连接,并使用addPlayersToMatch
向退出发送邀请。 dropout的inviteHandler已经设置在开始时,它会触发。 dropout获取邀请并调用似乎是标准代码:
GKMatchmakerViewController *mmvc
mmvc = [[GKMatchmakerViewController alloc] initWithInvite:_pendingInvite];
mmvc.matchmakerDelegate = self;
[_presentingViewController presentViewController:mmvc animated:YES completion:nil];
在退出计算机上,MatchMakerViewController正好出现,它只显示已经在比赛中的玩家,并且很快就会标记为" Ready"。然而,控制器显示消息"等待游戏开始......",didFindMatch
永远不会被解雇。没有用于启动游戏的UI(唯一的按钮是左上角的取消)。
奇怪的是在主机inviteeResponseHandler
上发生了火,所以看起来主机收到了丢失回来的消息。我在这里打电话给finishMatchmakingForMatch
,但它似乎没有做任何事情。
那么如何告诉我的辍学者解雇MatchMakerViewController?
撕掉我的头发!
答案 0 :(得分:0)
您是否正在处理matchmaker委托中的did find match方法?
(注意我的代码是swift)但您可以轻松地将其移植到obj c
//已找到点对点匹配,游戏应该开始
public func matchmakerViewController(viewController: GKMatchmakerViewController!, didFindMatch match: GKMatch!)
{
println("didFindMatch");
if (!_matchStarted && match.expectedPlayerCount == 0) {
match.delegate = self;
mmvc.dismissViewControllerAnimated(true,completion:completedBlock);
}
}