问题描述
我在继承自以下协议的 SKScene 中展示了一个 GKGameCenterViewController
。
protocol GameCenter {}
extension GameCenter where Self: SKScene {
func goToleaderboard() {
let vc = GKGameCenterViewController()
vc.gameCenterDelegate = GameViewController()
vc.viewState = .leaderboards
vc.leaderboardIdentifier = "leaderboard"
view?.window?.rootViewController?.present(vc,animated: true,completion: nil)
}
}
虽然 GKGameCenterViewController
显示完美,但当我尝试通过单击右上角的 X 关闭时,没有任何反应。我认为这是因为对我的原始 GameViewController
的引用已被解除分配。我怎样才能让这种解雇生效?
解决方法
您的委托应该关闭 Game Center 视图控制器。如果您的游戏暂停了任何游戏或其他活动,它可以通过此方法重新启动这些服务。
这意味着您需要在委托中实现 gameCenterViewControllerDidFinish
方法并自行关闭 gameCenterViewController
。
您的 GameViewController()
func gameCenterViewControllerDidFinish(_ gameCenterViewController: GKGameCenterViewController) {
gameCenterViewController.dismiss(animated: true,completion: nil)
}