繁体   English   中英

游戏中心 - 多人联机

[英]Game Center - Connecting for Multiplayer

我一直在尝试实现 Game Center 多人游戏并努力获得 GKMatchViewController 之外的任何东西。

我有两个视图,一个是我的主菜单,这是启动多人游戏并且玩家获得 GKMatchViewController 的地方。 然后在这背后,用户不知道它,但视图更改为他们实际玩的多人游戏视图,因此当 GKMatchViewController 被解除时,他们在游戏视图中而不是菜单中。

我在这里启动多人游戏(是的,我使用的是 cocos2d):

-(void)mpGo:(id)sender{
    GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
    request.minPlayers = 2;
    request.maxPlayers = 2;

    [[GKMatchmaker sharedMatchmaker] findMatchForRequest:request
                                   withCompletionHandler:^(GKMatch *returnedMatch, NSError *error) 
     {
         if (error) NSLog(@"match error: %@", error);
         else if (returnedMatch != nil)
         {
             match = [returnedMatch retain]; 
             match.delegate = self; // start!
         }
     }];

    tempVC = [[UIViewController alloc] init];

    GKMatchmakerViewController *mmvc = [[[GKMatchmakerViewController alloc] initWithMatchRequest:request] autorelease];
    if (mmvc != nil)
    {
        mmvc.matchmakerDelegate = self;
        [[[CCDirector sharedDirector] openGLView] addSubview:tempVC.view];
        [tempVC presentModalViewController:mmvc animated: YES];
    }

    [[CCDirector sharedDirector] replaceScene:[CCTransitionFade transitionWithDuration:1.0 scene:[mpView node] withColor:ccWHITE]];
}

按“立即播放”时,出现此错误:

匹配错误:错误域=GKErrorDomain 代码=2“请求的操作已被取消。” UserInfo=0x2248d0 {NSLocalizedDescription=请求的操作已被取消。}

然后它就停留在“寻找玩家...”视图上。

我从来没有用 GameCenter 做过什么,但也许我可以提供帮助。 当我收到错误时

“请求的操作已被取消”

在反向地理编码器中,我发现应用程序没有时间执行请求。 你通过执行findMatchForRequest:得到错误,所以也许你的请求变量没有完全设置,检查一下。 您还可以尝试将NSLog()放在第一行(在块中)并查看您传递的变量returnedMatcherror

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM