我无法使用自动匹配和 GKMatchmakerViewController 在两个玩家之间建立连接。
行为是这样的:
调用了 didFindMatch
expectedPlayerCount 不为零(始终为 1)
didChangeState 从未被调用
在很长一段时间后,收到断开连接的播放器。
有没有人可以解决这个问题?
谢谢!
我无法使用自动匹配和 GKMatchmakerViewController 在两个玩家之间建立连接。
行为是这样的:
调用了 didFindMatch
expectedPlayerCount 不为零(始终为 1)
didChangeState 从未被调用
在很长一段时间后,收到断开连接的播放器。
有没有人可以解决这个问题?
谢谢!
为了获得正确数量的玩家连接,请确保您GKMatchRequest
正确设置。
在这个例子中,我有一个游戏只有在有两个玩家连接时才有效,所以我将最小和最大玩家数设置为 2:
GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = 2;
request.maxPlayers = 2;
GKMatchmakerViewController* mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
mmvc.matchmakerDelegate = self;
然后,您记录的所有内容都按预期工作。
编辑:
再次阅读您的问题后,还要确保您保留了GKMatch
通过以下方式提供给您的对象:
-(void) matchmakerViewController:(GKMatchmakerViewController*)viewController didFindMatch:(GKMatch*)match;
当然,你必须设置这个匹配对象的委托:
//Done!
-(void) matchmakerViewController:(GKMatchmakerViewController*)viewController didFindMatch:(GKMatch*)match{
[self dismissModalViewController];
[self setCurrentMatch:match];
match.delegate = self;
if (!matchStarted && match.expectedPlayerCount == 0){
matchStarted = YES;
[delegate onMatchStart];
self.handlerVoice = [OnlineHandlerVoice handlerWithMatch:currentMatch];
}
}