我无法使用自动匹配和GKMatchmakerViewController在两个玩家之间建立连接。
行为是:
didFindMatch被称为
expectedPlayerCount不为零(始终为1)
didChangeState永远不会被调用
经过一段时间后,播放器被断开了。
有没有人能解决这个问题?
谢谢!
答案 0 :(得分:0)
为了获得正确数量的玩家连接,请务必正确设置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];
}
}