使用cocos2d的游戏中心排行榜导致应用程序无响应

时间:2013-03-06 05:30:44

标签: iphone objective-c cocos2d-iphone game-center

好的,所以我试图在我的cocos2d游戏中显示Apple Game Center Leaderboards。

我在这方面遇到了一些麻烦。

我最终偶然发现this并在我的一个CCScene类中实现了以下内容(我稍微修改了原始代码以防止编译器警告)。

- (void)showLeaderboardForCategory:(NSString *)category
{
    // Create leaderboard view with default Game Center style
    leaderboardController = [[GKLeaderboardViewController alloc] init];

    // If view controller was successfully created...
    if (leaderboardController != nil)
    {
        // Leaderboard config
        leaderboardController.leaderboardDelegate = self; // leaderboardController will send messages to this object
        leaderboardController.category = category;
        leaderboardController.timeScope = GKLeaderboardTimeScopeAllTime;

        // Create an additional UIViewController to attach the GKLeaderboardViewController to
        vc = [[UIViewController alloc] init];

        // Add the temporary UIViewController to the main view
        [[CCDirector sharedDirector].view.window addSubview:vc.view];

        // Tell UIViewController to present the leaderboard
        [vc presentModalViewController:leaderboardController animated:YES];
    }
}

- (void)leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController
{
    [vc dismissViewControllerAnimated:YES completion:nil];
}

而且,它有效!至少在我打电话时,它会正确显示排行榜。

唯一的问题是,当我点击排行榜上的“完成”并且模态视图解散时,我的CCScene不再响应点击事件。

我需要做些什么来重新获得回应?

1 个答案:

答案 0 :(得分:1)

参考样本普通cocos2d项目:

     -(void)showLeaderboard
      {
        GKLeaderboardViewController *leaderboardViewController = [[GKLeaderboardViewController alloc] init];
        leaderboardViewController.leaderboardDelegate = self;
        AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
        [[app navController] presentModalViewController:leaderboardViewController animated:YES];
        [leaderboardViewController release];
     }

代表职能:

-(void) leaderboardViewControllerDidFinish:(GKLeaderboardViewController *)viewController
{
    AppController *app = (AppController*) [[UIApplication sharedApplication] delegate];
    [[app navController] dismissModalViewControllerAnimated:YES];
}