Отображение таблицы лидеров Game Center в SpriteKit

Я работаю над игрой и ищу помощь или код для отображения таблицы лидеров GameCenter в моем приложении, когда пользователь нажимает кнопку. Я понятия не имею, с чего начать, так как все остальные ответы, кажется, для Obj-C, спасибо!

РЕДАКТИРОВАТЬ: приведенный ниже ответ работал отлично, но для тех, кто интересуется, как это сделать в SpriteKit, просто добавьте приведенные ниже методы в GameViewController и добавьте наблюдателя центра уведомлений.

NSNotificationCenter.defaultCenter().addObserver(self, selector: "showLeaderboard", name: "showLeaderboard", object: nil)

В своем классе SKScene просто позвоните этому наблюдателю.

NSNotificationCenter.defaultCenter().postNotificationName("showLeaderboard", object: nil)

Просто чтобы помочь тем, кто интересуется!


person Chris Gilardi    schedule 26.06.2015    source источник


Ответы (2)


Включите протокол GKGameCenterControllerDelegate в свой класс.

class ViewController: UIViewController, GKGameCenterControllerDelegate

Этот метод закрывает представление Game Center при нажатии «Готово»:

func gameCenterViewControllerDidFinish(gcViewController: GKGameCenterViewController!) {
    self.dismissViewControllerAnimated(true, completion: nil)
}

Эта функция включает в себя код, который необходим для отображения таблицы лидеров:

func showLeaderboard() {

    // declare the Game Center viewController
    var gcViewController: GKGameCenterViewController = GKGameCenterViewController()
    gcViewController.gameCenterDelegate = self

    gcViewController.viewState = GKGameCenterViewControllerState.Leaderboards

    // Remember to replace "Best Score" with your Leaderboard ID (which you have created in iTunes Connect)
    gcViewController.leaderboardIdentifier = "Best_Score"
    // Finally present the Game Center ViewController
    self.showViewController(gcViewController, sender: self)
    self.navigationController?.pushViewController(gcViewController, animated: true)
    self.presentViewController(gcViewController, animated: true, completion: nil)
}

Теперь вы можете активировать функцию showLeaderboard, нажав UIButton:

@IBAction func buttonShowLeaderboard(sender: AnyObject) {
    showLeaderboard()
}
person Cesare    schedule 26.06.2015

Вы можете сделать это, как показал CeceXX, или вы можете использовать Easy-Game-Center от DaRkD0G, чтобы упростить задачу. https://github.com/DaRkD0G/Easy-Game-Center-Swift

person Rasputin    schedule 26.06.2015
comment
Я уже реализовал это так, как сказал @CeceXX, но да, похоже, это тоже сработает, спасибо, что поделились! - person Chris Gilardi; 26.06.2015