gpt4 book ai didi

ios - Swift GameCenter 行为不正常

转载 作者:行者123 更新时间:2023-11-30 13:35:40 30 4
gpt4 key购买 nike

我在使用 GameCenter 时遇到了 2 个问题。

  1. 如果玩家未登录 GameCenter,则在向您发出提示称您未登录后,我将无法再单击 View 上的任何按钮。

  2. 如果玩家登录 GameCenter,访问排行榜后,按“完成”不会关闭排行榜 View 。

这是我与 GameCenter 相关的代码:

游戏 View Controller :

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) 不确定这是否有帮助,但您的登录代码不太正确。如果没有登录 View Controller 并不一定意味着玩家已登录。您也没有处理可选错误。试试这个。

 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)它不会关闭屏幕,因为您没有设置委托(delegate)。

创建游戏中心 View Controller 的代码应该如下所示

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

关于ios - Swift GameCenter 行为不正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36102502/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com