我遇到了2个与GameCenter有关的问题。
如果玩家未登录GameCenter,之后会给您提示您未登录,我将无法再点击我视图中的任何按钮。
如果玩家登录GameCenter,在访问排行榜后,按“完成”将不会忽略排行榜视图。
这是我与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)
}
}
}
任何和所有帮助将不胜感激
答案 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)