3

如何将 Game Center 或 GameKit 框架与 Sprite Kit Xcode 模板一起使用?在 Sprite 套件中,它使用场景;但通常要查看排行榜,例如您需要“presentModalViewController”,但这在 SKView 中是不可能的。

以及如何在 iOS 6 中验证播放器和所有其他有趣的东西。

提前致谢!

4

4 回答 4

4

您可以通过使用此代码访问根视图控制器来使用“presentModalViewController”

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

现在您可以在任何地方访问您的 ModelViewController,包括 SKScenes。我在我的最新游戏中做到了,而且效果很好

此外,我建议您使用单独的对象来控制游戏中心,如排行榜和成就,以便您可以在下一个游戏中重复使用它。

于 2013-10-20T16:27:13.540 回答
0

这是一个更新的认证本地播放器,但 Ravindra 的代码也可以工作。

- (void) authenticateLocalPlayer
{
    GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer];
    localPlayer.authenticateHandler = ^(UIViewController *viewController, NSError *error){
        if (viewController != nil)
        {
            //showAuthenticationDialogWhenReasonable: is an example method name. Create your own method that displays an authentication view when appropriate for your app.
            //[self showAuthenticationDialogWhenReasonable: viewController];
        }
        else if (localPlayer.isAuthenticated)
        {
            //authenticatedPlayer: is an example method name. Create your own method that is called after the loacal player is authenticated.
            //[self authenticatedPlayer: localPlayer];
        }
        else
        {
            //[self disableGameCenter];
        }
    };
}
于 2014-09-11T07:37:15.877 回答
0

斯威夫特 2.0

 func authenticateLocalPlayer() {

        let localPlayer = GKLocalPlayer.localPlayer()

        localPlayer.authenticateHandler = {  (viewController, error )  -> Void in

            if (viewController != nil) {

                let vc:UIViewController = self.view!.window!.rootViewController!
                vc.presentViewController(viewController!, animated: true, completion:nil)

            } else {


                print ("Authentication is \(GKLocalPlayer.localPlayer().authenticated) ")
                GlobalData.loggedIntoGC = true



                // do something based on the player being logged in.

全球数据 Swift 文件:

static var loggedIntoGC:Bool = false

启用 Game Center 的场景中的调用方法:即 HUD 或 GameScene

override func didMoveToView(view: SKView)` 
    authenticateLocalPlayer()
于 2016-02-29T16:02:35.807 回答
-1

你可以像这样进行身份验证

[[GKLocalPlayer localPlayer] authenticateWithCompletionHandler:^(NSError *error) {
            if (error == nil)
            {
                static_setEnable( true );

                NSLog(@" Authenticate local player complete");

            }
            else
            {
                static_setEnable( false );
                NSLog(@"Authenticate local player Error: %@", [error description]);
            }
        }];
    }
于 2013-10-20T04:11:16.087 回答