Swift GameCenter行为不正常

时间:2016-03-19 13:42:57

标签: ios xcode swift sprite

我遇到了2个与GameCenter有关的问题。

  1. 如果玩家未登录GameCenter,之后会给您提示您未登录,我将无法再点击我视图中的任何按钮。

  2. 如果玩家登录GameCenter,在访问排行榜后,按“完成”将不会忽略排行榜视图。

  3. 这是我与GameCenter相关的代码:

    GameViewController:

    Teacher model

    GameScene:

    func authPlayer() { // Gets called in ViewDidLoad
        let localPlayer = GKLocalPlayer.localPlayer()
        localPlayer.authenticateHandler = {
            (view, error) in
    
            if view != nil {
                self.presentViewController(view!, animated: true, completion: nil)
            }
            else {
                print(GKLocalPlayer.localPlayer().authenticated)
            }
        }
    }
    

    任何和所有帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

1)不确定这会有所帮助,但您的登录代码不太正确。如果没有登录视图控制器并不一定意味着播放器已登录。您也没有处理可选错误。试试这个。

 localPlayer.authenticateHandler = { [unowned self] (viewController, error) in // will handle login changes also
        if let error = error {
            print(error.localizedDescription)
            return
        }

        if let viewController = viewController {
            self.presentViewController(viewController, animated: true, completion: nil)
        }
        else if self.localPlayer.authenticated {
            print("Player authenticated")
        }
        else {
            print("Player not authenticated")

        }
    }      

我不确定为什么你的gameViewCntroller不会响应。您是不是只是在gameViewController中加载第一个SKScene。 你能否进一步描述一些代码,以及之后无效的内容。

2)因为你没有设置委托,所以它不会解雇屏幕。

您在创建游戏中心的位置编码viewController应该如下所示

 let viewController = self.view?.window?.rootViewController
 let gcvc = GKGameCenterViewController()
 gcvc.gameCenterDelegate = self // YOU FORGOT THIS LINE
 viewController?.presentViewController(gcvc, animated: true, completion: nil)