2

我正在为我的游戏开发多人游戏,我遇到了以下问题我正在使用 Cocos 2d 2.1、iOS 6 和以下代码来显示媒人(横向)

 AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
    [[GCHelper sharedInstance] findMatchWithMinPlayers:2 maxPlayers:4 viewController:[app navController] delegate:self];

这就是它的外观在此处输入图像描述

以下代码用于该功能

- (void)findMatchWithMinPlayers:(int)minPlayers maxPlayers:(int)maxPlayers
             viewController:(UIViewController *)viewController
                   delegate:(id<GCHelperDelegate>)theDelegate {

if (!gameCenterAvailable) return;

matchStarted = NO;
self.match = nil;
self.presentingViewController = viewController;
delegate = theDelegate;
[presentingViewController dismissModalViewControllerAnimated:NO];

GKMatchRequest *request = [[[GKMatchRequest alloc] init] autorelease];
request.minPlayers = minPlayers;
request.maxPlayers = maxPlayers;

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

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

}

4

2 回答 2

0

这段代码在 HelloWorldLayer 中吗?如果是这样,那是导演所说的第一层吗?我有同样的问题,但如果我严格遵循为我创建的 cocos2d 模板,它就可以解决。这意味着我使用 IntroLayer 作为初始层,然后它从那里过渡到 HelloWorldLayer,在那里我拥有游戏中心代码。我认为这与导演加载太晚有关,但我不确定

于 2013-02-09T11:34:00.113 回答
0

当您尝试推送 时会发生这种情况UIViewController,但您的应用程序中只有一个 UIView ,而没有 UIViewController。让我猜猜,你没有rootViewController.

如果您使用EAGLView模板工作,则必须为 UIView 声明一个 UIViewController。这可以很简单,

- (void) applicationDidFinishLaunching:(UIApplication *)application
{
  window.rootViewController = [[UIViewController alloc] init]; 
  window.rootViewController.view = glView; // MUST SET THIS UP,
  // NOW THE EAGLView HAS A UIViewController.

  [glView startAnimation];
}

然后,任何时候你想推动其中一个 GameKit UIViewControllers,使用presentViewController你的 Window 对象的方法rootViewController

例如:

[self.window.rootViewController presentViewController:vc animated:TRUE completion:^(void){puts("DONE");} ] ;

错误将消失,窗口将正确形成。

于 2013-03-29T08:11:58.640 回答