Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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
如何在spritekit Swift 3上添加分数计数器_Swift_Swift3_Sprite Kit_Scoring - Fatal编程技术网

如何在spritekit Swift 3上添加分数计数器

如何在spritekit Swift 3上添加分数计数器,swift,swift3,sprite-kit,scoring,Swift,Swift3,Sprite Kit,Scoring,我想在我的比赛中得分,这需要每秒增加3分 我写了这样的代码 var scoreLabel = SKLabelNode() let scoreLabelName = "scoreLabel" var count = 0 override func didMove(to view: SKView) { self.physicsWorld.gravity = CGVector(dx: 0, dy: 0) physicsWorld.contactDelegate = self

我想在我的比赛中得分,这需要每秒增加3分 我写了这样的代码

var scoreLabel = SKLabelNode()
let scoreLabelName = "scoreLabel"
var count = 0

override func didMove(to view: SKView) {
    self.physicsWorld.gravity = CGVector(dx: 0, dy: 0)
    physicsWorld.contactDelegate = self
    addPlayer()

    scoreLabel = SKLabelNode(fontNamed: "ScoreLabel")
    scoreLabel.name = scoreLabelName
    scoreLabel.fontSize = 125
    scoreLabel.fontColor = SKColor.white
    scoreLabel.text = "\(count)"
    print(size.height)
    scoreLabel.position = CGPoint(x: frame.size.width / 2, y: frame.size.height - 300)
    self.addChild(scoreLabel)
}

请记住……在SpriteKit中,您有一个定期调用的方法,它为您提供了
currentTime
:)

所以你可以:

  • 添加一个变量以跟踪“上次更新的时间”
  • 对照
    update
  • 如果差异>1…宾果!您可以更新“上次更新时间”值以匹配
    currentTime
    ,并更新您想要更新的内容
因此,在您的情况下,大致如下:

var scoreLabel = SKLabelNode()
let scoreLabelName = "scoreLabel"
var count = 0
var lastUpdateTime: TimeInterval?
然后更新:

override func update(_ currentTime: TimeInterval) {
    var delta = TimeInterval()
    if let last = lastUpdateTime {
        delta = currentTime - last
    } else {
        delta = currentTime
    }
    if delta > 1.0 {
        //tick tock, a second has passed, update lastUpdateTime
        lastUpdateTime = currentTime
        count += 3
        scoreLabel.text = "\(count)"
    }
}}

希望这能给你一些线索。

你走对了方向-你是否需要实现任何代码来提高分数?func评分(){var time:TimeInterval if time>1.0{count+=3 time=0}这是真的还是假的?把你所有与这个函数相关的代码都放到你的问题中去——很难把它看作是一个注释。你可以使用update:method,比如给定答案中建议的方法,也可以使用SKActions。