在SKScene中展示GKGameCenterViewController

时间:2014-04-15 07:50:17

标签: ios sprite-kit game-center viewcontroller skscene

我在努力解决以下问题:

我用SpriteKit制作了一款游戏。我在游戏中实现了GameCenter。有用。播放器自动登录,高分将添加到默认排行榜。但是例如在" EndScreen"我想展示GameCenterLeaderboard

Appledocumentation告诉我应该使用以下代码:

- (void) showGameCenter

{

GKGameCenterViewController *gameCenterController = [[GKGameCenterViewController alloc] init];

if (gameCenterController != nil)

{

gameCenterController.gameCenterDelegate = self;

[self presentViewController: gameCenterController animated: YES completion:nil];

}

}

presentViewController不起作用。有没有办法从SKScene切换到我的标准ViewController。或者如何在触摸按钮的情况下显示GameCenterleaderboard

老实说,我对编程很陌生,所以这个问题对你们来说可能不是一个大问题。 非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

是的,有一种方法,您可以直接从-(void)showGameCenter

调用此代码
  UIViewController *vc = self.view.window.rootViewController;
  [vc presentViewController: gameCenterController animated:YES completion:Nil];

答案 1 :(得分:0)

您可以使用通知告诉ViewController显示排行榜。

ViewController.m

@implementation GameSceneViewController

- (void)awakeFromNib {
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(showGameCenter)
                                                 name:@"ShowLeaderboard"
                                               object:nil];
}

- (void) dealloc
{
    // If you don't remove yourself as an observer, the Notification Center
    // will continue to try and send notification objects to the deallocated
    // object.
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

.....

SKScene.m

- (void)showLeaderboard {    
        [[NSNotificationCenter defaultCenter] 
             postNotificationName:@"ShowLeaderboard"
                           object:nil
                         userInfo:nil];
}