当前位置: 首页 > 面试题库 >

如何使用Sprite Kit和Swift在游戏中设置高分

伯茂才
2023-03-14
问题内容

我做了一个简单的游戏,你必须躲避障碍并收集硬币。每枚硬币将给您1分。在玩游戏时,有一个得分标签。如何创建高分标签,即使他们退出游戏也会记住高分。我也想知道如何将高分与游戏中心联系起来。

任何帮助将非常感激。

到目前为止,这是我确定获胜者何时赢得比赛的方式。

func didBeginContact(contact: SKPhysicsContact) {
    var firstBody = SKPhysicsBody()
    var secondBody = SKPhysicsBody()

    if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
        firstBody = contact.bodyA
        secondBody = contact.bodyB
    } else {
        firstBody = contact.bodyB
        secondBody = contact.bodyA
    }


    if (firstBody.categoryBitMask & UInt32(shipCategory)) != 0 && (secondBody.categoryBitMask & UInt32(obstacleCategory)) != 0 {
        ship.removeFromParent()
        let reveal = SKTransition.flipHorizontalWithDuration(0.5)
        let scene = GameOverScene(size: self.size)
        self.view?.presentScene(scene, transition: reveal)
    }

    if (firstBody.categoryBitMask & UInt32(shipCategory)) != 0 && (secondBody.categoryBitMask & UInt32(coinCategory)) != 0 {
        coin.removeFromParent()
        playerScore = playerScore + 1
        playerScoreUpdate()
    }

    //CHANGE TO YOU WON SCENE
    //CHECK TO SEE IF COINS ARE 10, THEN YOU WON
    if playerScore == 10 {

        let reveal = SKTransition.flipHorizontalWithDuration(0.5)
        let scene = GameWonScene(size: self.size)
        self.view?.presentScene(scene, transition: reveal)

    }



}

编辑

saveHighScore(100)
var score = 99
if score > highScore() {
saveHighScore(score)
println("New Highscore = " + highScore().description)
} else {
println("HighScore = " + highScore().description )  // "HighScore =     100"
}
score = 127
if score > highScore() {
saveHighScore(score)
println("New Highscore = " + highScore().description)  // "New     Highscore = 127"
} else {
println("HighScore = " + highScore().description )
}

编辑2

func playerScoreUpdate() {
    playerScorelabel.text = "Score: \(playerScore)"
}

编辑3

func addHighScoreLabel() {

    // Player Score
    highScoreLabel.fontName = "DIN Condensed"
    highScoreLabel.fontSize = 28
    highScoreLabel.fontColor = SKColor.whiteColor()
    highScoreLabel.position = CGPoint(x: 500, y: size.height/1.09)
    highScoreLabel.text = "HighScore: \(highScore)"
    addChild(highScoreLabel)
}


问题答案:
var playerScore = 0

func playerScoreUpdate() {
    let highScore = NSUserDefaults().integerForKey("highscore")
    if playerScore > highScore {
         NSUserDefaults().setInteger(playerScore, forKey: "highscore")
    }
    playerScorelabel.text = "Score: \(playerScore)"
}

playerScore = 200
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") )  // 200

playerScore = 180
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") )  // 200


playerScore = 250
playerScoreUpdate()
println( NSUserDefaults().integerForKey("highscore") )  // 250


highScoreLabel.text = "HighScore: " + NSUserDefaults().integerForKey("highscore").description


 类似资料:
  • 问题内容: 我想“重置”和“重启” GameScene,就好像第一次调用GameScene一样。我已经研究了执行此操作的不同方法,但是每次收到警告时,我都试图将节点添加到已具有父级的父级。但是,在我的代码中,我删除了所有现有节点,因此我对如何重置GameScene感到非常困惑。这就是我现在的操作方式(当我想从头开始重新启动GameScene时调用此代码,并在GameScene类中调用此代码): 1

  • 问题内容: 我成功使用以下代码暂停了一个场景游戏: 但是我有一个问题。游戏中的所有随机间隔都会创建对象并将其显示在屏幕上。当我暂停游戏时,它将继续在后台创建对象,而当我继续游戏时,在暂停期间创建的所有对象将同时显示在屏幕上。 我该如何解决? 问题答案: 暂停SKView时,无法将SKLabelNode(或其他任何东西)添加到场景中。您将需要返回运行循环,以便在暂停游戏之前添加您的文本。这是一种方法

  • 问题内容: 我正在使用Swift在SpriteKit中制作游戏。 在Objective-C中,我可以使用以下方法: 对此执行操作,但是我无法在Swift中使用此功能。基本上,我不知道如何在Swift中引用该节点。 这是我正在使用的代码,但是“ usingBlock:”部分遇到了麻烦。我已经尝试了很多小时,但没有成功。请帮助! 问题答案: 目前,不要相信自动完成功能会插入所需的代码-它会从“标头”中

  • 问题内容: 我想要一个使用样式的单元格。 我最初的Objective-C代码是: 在已经在SO上搜索了几个问题之后,我想像这样在Swift中编写它: 但这并不能让我说我想要一种风格。所以我尝试了这个: 这给了我一个牢房,但是却没有让我。 我已经研究了更多内容,并观看了此视频教程,但是他创建了一个单独的对象,我认为这是不必要的,因为我之前在Obj- C中实现了相同的效果。 有任何想法吗?谢谢。 问题

  • 问题内容: 我在Swift中创建了一个游戏,其中涉及怪物的出现。怪物根据计时器的出现和消失如下: 然后我就这样称呼它(例如在2秒后生成): 然后,我进行了类似的隐藏操作(在x秒后,我将怪物消灭了)。 因此,我在屏幕顶部创建了一个设置图标,当您点击它时,会出现一个巨大的矩形窗口以更改游戏设置,但是自然的问题是怪物仍然在背景中生成。如果我将玩家带到另一个屏幕,我相信我会失去我所有的游戏状态,并且必须重

  • 我已经尝试在Objective-C中创建HTTP Get。 它使用中的,并使用选择或。 并通过以下代码设置标头: