Ios Swift游戏中心运行不正常
我在使用GameCenter时遇到了两个问题Ios Swift游戏中心运行不正常,ios,xcode,swift,sprite,Ios,Xcode,Swift,Sprite,我在使用GameCenter时遇到了两个问题 如果玩家未登录GameCenter,则在If向您发出警告说您未登录后,我将无法再单击视图中的任何按钮 如果玩家登录GameCenter,在访问排行榜后,按“完成”不会关闭排行榜视图 以下是我与GameCenter相关的代码: GameViewController: func authPlayer() { // Gets called in ViewDidLoad let localPlayer = GKLocalPlayer.localPla
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)
}
}
}
游戏场景:
if gameCenterBtn.containsPoint(location) { // In touches began for touch in touches
saveHighScore(highLevel)
let viewController = self.view!.window?.rootViewController
let gcvc = GKGameCenterViewController()
viewController?.presentViewController(gcvc, animated: true, completion: nil)
}
func saveHighScore(number : Int) {
if GKLocalPlayer.localPlayer().authenticated {
let scoreReporter = GKScore(leaderboardIdentifier: "myLeaderBoardID")
scoreReporter.value = Int64(number)
let scoreArray : [GKScore] = [scoreReporter]
GKScore.reportScores(scoreArray, withCompletionHandler: nil)
}
}
func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController) {
gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}
任何和所有帮助都将不胜感激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中加载第一个场景吗。
你能不能用一些代码进一步描述一下什么东西在以后不起作用
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)