show GKGameCenterViewController in SKScene

2019-10-19 21:12发布

我有以下问题所困扰:

我做了一个游戏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一个按钮感动?

说实话,我很新的编程所以这里这个问题可能不是一个大问题,以解决你们。 大的大的帮助表示感谢。

Answer 1:

是的,有一种方法,你可以直接调用这个代码-(void)showGameCenter

  UIViewController *vc = self.view.window.rootViewController;
  [vc presentViewController: gameCenterController animated:YES completion:Nil];


Answer 2:

您可以使用通知来告诉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];
}


文章来源: show GKGameCenterViewController in SKScene