Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 游戏中心秀;不得分“;_Swift_Sprite Kit_Game Center_Leaderboard - Fatal编程技术网

Swift 游戏中心秀;不得分“;

Swift 游戏中心秀;不得分“;,swift,sprite-kit,game-center,leaderboard,Swift,Sprite Kit,Game Center,Leaderboard,我最近尝试将游戏中心添加到我的精灵套件游戏中,但它无法正常工作。 因此,我将分数发送到GC排行榜,我没有收到任何错误,并且分数明显发送,但我仍然没有看到排行榜中列出任何分数!排行榜本身列在游戏中心,没有分数 GameViewController import GameKit class GameViewController: UIViewController, GKGameCenterControllerDelegate{ override func viewDidLoad()

我最近尝试将游戏中心添加到我的精灵套件游戏中,但它无法正常工作。 因此,我将分数发送到GC排行榜,我没有收到任何错误,并且分数明显发送,但我仍然没有看到排行榜中列出任何分数!排行榜本身列在游戏中心,没有分数

GameViewController

import GameKit


class GameViewController: UIViewController, GKGameCenterControllerDelegate{



    override func viewDidLoad() {
        super.viewDidLoad()

        let skView = self.view as! SKView
        let scene = GameScene(size: skView.bounds.size)
        scene.scaleMode = .AspectFit

        skView.presentScene(scene)
        authenticateLocalPlayer()

    }

    //Initiate GameCenter
    func authenticateLocalPlayer(){

        var localPlayer = GKLocalPlayer.localPlayer()

        localPlayer.authenticateHandler = {(viewController, error) -> Void in

            if (viewController != nil) {
                self.presentViewController(viewController, animated: true, completion: nil)
            }

            else {
                println((GKLocalPlayer.localPlayer().authenticated))
            }
        }

    }

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

}
游戏状态

import Foundation
import GameKit

class GameState {

    var score: Int
    var highScore: Int

    class var sharedInstance :GameState {
        struct Singleton {
            static let instance = GameState()
        }

        return Singleton.instance
    }

    init() {
        // Init
        score = 0
        highScore = 0

        // Load game state
        let defaults = NSUserDefaults.standardUserDefaults()

        highScore = defaults.integerForKey("highScore")
    }

    func saveState() {
        // Update highScore if the current score is greater
        highScore = max(score, highScore)

        // Store in user defaults
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setInteger(highScore, forKey: "highScore")
        NSUserDefaults.standardUserDefaults().synchronize()
    }



    func saveHighScore(high:Int64) {
        NSUserDefaults.standardUserDefaults()
        //check if user is signed in
        if GKLocalPlayer.localPlayer().authenticated {

            var scoreReporter = GKScore(leaderboardIdentifier: "LeaderboardID")

            scoreReporter.value = Int64(highScore) //score variable here (same as above)

            var scoreArray: [GKScore] = [scoreReporter]


            GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError!) -> Void in
                if error != nil {
                    println(error.description)
                }
            })

        }
    }
}
class EndGameScene: SKScene, GKGameCenterControllerDelegate {

    func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!)
    {
        gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)

    }
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    var touch = touches as! Set<UITouch>
    var location = touch.first!.locationInNode(self)
    var node = self.nodeAtPoint(location)

    if (node.name == "gameCenter") {
        var vc = self.view?.window?.rootViewController
        var gc = GKGameCenterViewController()
        gc.gameCenterDelegate = self
        vc?.presentViewController(gc, animated: true, completion: nil)

    }
结束游戏场景

import Foundation
import GameKit

class GameState {

    var score: Int
    var highScore: Int

    class var sharedInstance :GameState {
        struct Singleton {
            static let instance = GameState()
        }

        return Singleton.instance
    }

    init() {
        // Init
        score = 0
        highScore = 0

        // Load game state
        let defaults = NSUserDefaults.standardUserDefaults()

        highScore = defaults.integerForKey("highScore")
    }

    func saveState() {
        // Update highScore if the current score is greater
        highScore = max(score, highScore)

        // Store in user defaults
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setInteger(highScore, forKey: "highScore")
        NSUserDefaults.standardUserDefaults().synchronize()
    }



    func saveHighScore(high:Int64) {
        NSUserDefaults.standardUserDefaults()
        //check if user is signed in
        if GKLocalPlayer.localPlayer().authenticated {

            var scoreReporter = GKScore(leaderboardIdentifier: "LeaderboardID")

            scoreReporter.value = Int64(highScore) //score variable here (same as above)

            var scoreArray: [GKScore] = [scoreReporter]


            GKScore.reportScores(scoreArray, withCompletionHandler: {(error : NSError!) -> Void in
                if error != nil {
                    println(error.description)
                }
            })

        }
    }
}
class EndGameScene: SKScene, GKGameCenterControllerDelegate {

    func gameCenterViewControllerDidFinish(gameCenterViewController: GKGameCenterViewController!)
    {
        gameCenterViewController.dismissViewControllerAnimated(true, completion: nil)

    }
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    var touch = touches as! Set<UITouch>
    var location = touch.first!.locationInNode(self)
    var node = self.nodeAtPoint(location)

    if (node.name == "gameCenter") {
        var vc = self.view?.window?.rootViewController
        var gc = GKGameCenterViewController()
        gc.gameCenterDelegate = self
        vc?.presentViewController(gc, animated: true, completion: nil)

    }
类endGameSecene:SKScene,GKGameCenterControllerDelegate{
func GameCenterViewControllerdFinish(gameCenterViewController:GKGameCenterViewController!)
{
gameCenterViewController.dismissViewControllerAnimated(true,完成:nil)
}
覆盖func touchesBegined(触摸:设置,withEvent事件:UIEvent){
var touch=touch as!Set
var location=touch.first!.locationInNode(自)
var node=self.nodeAtPoint(位置)
如果(node.name==“gameCenter”){
var vc=self.view?.window?.rootViewController
var gc=GKGameCenterViewController()
gc.gameCenterDelegate=self
vc?.presentViewController(gc,动画:真,完成:无)
}

如何修复?感谢并抱歉我的英语

根据GameCenter要求应用程序必须在应用程序商店中。因此,我预计在发布之前,您将无法实际使用Game Center。虽然我希望苹果提供一些类似于应用程序内购买的测试服务器。但您是否设置了签名、证书等c、 ?这是否意味着在应用程序发布之前无法测试游戏中心是否与应用程序配合使用?@uliwitness您可以在沙箱环境中测试游戏中心,就像在应用程序购买中测试一样@uliwitness-您是错误的。苹果在开发过程中为游戏中心提供沙箱测试。@uliwitness在iTunes connect a中设置良好nd我在模拟器和我的设备上激活了“沙盒模式”。