我正在Swift中制作一个SpriteKit游戏。在gameState = inGame
期间,我希望得分每秒都会增加。如何以及在何处计算和显示这样的东西?
我发现的其他答案已经过时且不是很有帮助。可能有一个我不知道已存在的,所以如果你能指出我那个方向,我将非常感激。谢谢你的帮助。
答案 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
}
}
}
}