我正在使用此代码来使游戏中心在用户按下按钮时出现。我希望这能显示他们在排行榜上的高分:
@IBAction func showScores(x : UIButton) {
var gameCenterController : GKGameCenterViewController!
if (gameCenterController != nil) {
gameCenterController.gameCenterDelegate = self
self.presentViewController(gameCenterController, animated: true, completion: nil)
}
}
但是我在这条线上出现错误:
gameCenterController.gameCenterDelegate = self
上面写着
Type 'MenuViewController' does not conform to protocol `GKGameCenterControllerDelegate`
我究竟做错了什么?
如何在游戏中实现GameCenter,以便将用户的高分添加到排行榜中,通过按按钮可以查看他们?
最佳答案
确保像下面这样声明您的呈现视图控制器符合GKGameCenterControllerDelegate:
class MenuViewController: GKGameCenterControllerDelegate
然后在Swift中,将以下函数添加到MenuViewController中:
func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!)
{
//code to dismiss your gameCenterViewController
// for example:
gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)
}
最后,在呈现游戏中心视图控制器之前,请确保已将其设置为gameCenterDelegate。例如:
var gcViewController: GKGameCenterViewController = GKGameCenterViewController()
gcViewController.gameCenterDelegate = self
请注意,委托是
gameCenterDelegate
,而不仅仅是delegate
。另外,这是一个有关如何从MenuViewController中显示排行榜的示例。 (此代码将在MenuViewController中):
func showLeaderboard()
{
var gcViewController: GKGameCenterViewController = GKGameCenterViewController()
gcViewController.gameCenterDelegate = self
gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards
gcViewController.leaderboardIdentifier = "yourleaderboardid"
self.presentViewController(gcViewController, animated: true, completion: nil)
}