如何每秒增加和显示分数?

时间:2018-03-20 03:17:59

标签: swift xcode timer sprite-kit

我正在Swift中制作一个SpriteKit游戏。在gameState = inGame期间,我希望得分每秒都会增加。如何以及在何处计算和显示这样的东西?

我发现的其他答案已经过时且不是很有帮助。可能有一个我不知道已存在的,所以如果你能指出我那个方向,我将非常感激。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

这是一种非常简单的每秒递增和显示分数的方法,正如您所描述的那样。

"计时器"这将与您的游戏的帧速率相关联,因为在更新方法中检查了计数器,这可能会根据您的帧速率而有所不同。如果您需要更准确的计时器,请考虑Timer类并搜索Stack Overflow或Google以查看如何使用它,因为它可能比这里的简单更复杂。

要对此进行测试,请在Xcode中创建一个新的游戏模板项目,并使用以下代码替换GameScene.swift文件的内容。

您实际上并不需要使用gameStateIsInGame的部分。我只是把它放在那里作为演示,因为你关于检查一些gameState属性以便计时器触发的说法。在您自己的代码中,您将集成自己的gameState属性,但是您正在处理它。

import SpriteKit

class GameScene: SKScene {
    var scoreLabel: SKLabelNode!
    var counter = 0
    var gameStateIsInGame = true
    var score = 0 {
        didSet {
            scoreLabel.text = "Score: \(score)"
        }
    }

    override func didMove(to view: SKView) {
        scoreLabel = SKLabelNode(fontNamed: "Chalkduster")
        scoreLabel.text = "Score: 0"
        scoreLabel.position = CGPoint(x: 100, y: 100)
        addChild(scoreLabel)
    }

    override func update(_ currentTime: TimeInterval) {
        if gameStateIsInGame {
            if counter >= 60 {
                score += 1
                counter = 0
            } else {
                counter += 1
            }
        }
    }
}