我该如何使用swift在iOS游戏中添加一个每秒递增的分数?

我该如何使用swift在iOS游戏中添加一个每秒递增的分数?,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我想在场景顶部附近显示一个分数。评分取决于您持续的秒数,每当我尝试使用NSTimer实现时,该数字始终保持为0。提前谢谢 所以,非常简单地说,这就是我尝试过的,而且效果很好。我将计时器存储为实例变量,以便在以后必要时使其无效 class ViewController: UIViewController { var score: Int = 0 var timer: NSTimer? override func viewDidLoad() { super

我想在场景顶部附近显示一个分数。评分取决于您持续的秒数,每当我尝试使用NSTimer实现时,该数字始终保持为0。提前谢谢

所以,非常简单地说,这就是我尝试过的,而且效果很好。我将计时器存储为实例变量,以便在以后必要时使其无效

class ViewController: UIViewController {

    var score: Int = 0
    var timer: NSTimer?

    override func viewDidLoad() {
        super.viewDidLoad()

         timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("incrementTimer"), userInfo: nil, repeats: true)        
    }

    func incrementTimer() {
        score++
        println(score)
    }
}

所以,非常简单地说,这就是我尝试过的,而且效果很好。我将计时器存储为实例变量,以便在以后必要时使其无效

class ViewController: UIViewController {

    var score: Int = 0
    var timer: NSTimer?

    override func viewDidLoad() {
        super.viewDidLoad()

         timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("incrementTimer"), userInfo: nil, repeats: true)        
    }

    func incrementTimer() {
        score++
        println(score)
    }
}

您实际上不需要
NSTimer
。由于您使用的是SpriteKit,因此可以使用
SKAction
进行此操作。下面是一个例子:

let increaseScoreAction = SKAction.runBlock { score++ }
let waitAction = SKAction.waitForDuration(1)
let groupAction = SKAction.group([increaseScoreAction, waitAction])
let repeatAction = SKAction.repeatActionForever(groupAction)

runAction(repeatAction)

您实际上不需要
NSTimer
。由于您使用的是SpriteKit,因此可以使用
SKAction
进行此操作。下面是一个例子:

let increaseScoreAction = SKAction.runBlock { score++ }
let waitAction = SKAction.waitForDuration(1)
let groupAction = SKAction.group([increaseScoreAction, waitAction])
let repeatAction = SKAction.repeatActionForever(groupAction)

runAction(repeatAction)

我建议发布您当前的代码。在其当前状态下,任何人都无法知道此问题的答案。请更改为1秒并在Spritekit中使用@Ryan Allen。您不应将NSTimer用于与时间相关的操作,因为NSTimer不尊重节点、场景或视图的暂停状态。所以你明白了…好的方法是像Ben在他的答案中指出的那样,或者使用update:method和它的currentTime-passed参数。我建议发布你当前的代码。在其当前状态下,任何人都无法知道此问题的答案。请更改为1秒并在Spritekit中使用@Ryan Allen。您不应将NSTimer用于与时间相关的操作,因为NSTimer不尊重节点、场景或视图的暂停状态。所以你明白了…好的方法是像Ben在他的答案中指出的那样,或者使用update:method和它的currentTime-passed参数。