我该如何使用swift在iOS游戏中添加一个每秒递增的分数?
我想在场景顶部附近显示一个分数。评分取决于您持续的秒数,每当我尝试使用NSTimer实现时,该数字始终保持为0。提前谢谢 所以,非常简单地说,这就是我尝试过的,而且效果很好。我将计时器存储为实例变量,以便在以后必要时使其无效我该如何使用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
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参数。