我正在使用此代码来使游戏中心在用户按下按钮时出现。我希望这能显示他们在排行榜上的高分:

@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)
}

09-16 20:47