我有以下问题所困扰:
我做了一个游戏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
一个按钮感动?
说实话,我很新的编程所以这里这个问题可能不是一个大问题,以解决你们。 大的大的帮助表示感谢。
是的,有一种方法,你可以直接调用这个代码-(void)showGameCenter
:
UIViewController *vc = self.view.window.rootViewController;
[vc presentViewController: gameCenterController animated:YES completion:Nil];
您可以使用通知来告诉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];
}