我正在使用spritekit进行游戏,并希望每秒检查变量的一些更新(而不是使用经常检查的更新方法).我创建了一个scheduledTimer,它有一个我想要运行的函数的选择器,但它给了我错误:发送到实例的无法识别的选择器.
我知道这个函数可能需要正确的发送者,但它是什么?谢谢
var timer = Timer.scheduledTimer(timeInterval: 1, 
                                       target: self,
                                     selector: #selector(GameScene.updateEachSecond), 
                                     userInfo: nil,
                                      repeats: true)
func updateEachSecond() {
   print("1 second has passed")
}
你需要声明你的计时器
var timer = Timer()
作为GameScene的财产
并将您的计时器初始化移动到didMove(to:或在场景加载完成后运行的任何其他方法).
override func didMove(to view: SKView) {
    timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(updateEachSecond), userInfo: nil, repeats: true)
}
注释中建议的另一个选项是检查更新方法,如果第二个更改:
var timeInterval: TimeInterval = 0
var time = 0
override func update(_ currentTime: TimeInterval) {
    if timeInterval < currentTime.rounded(.down) {
        time += 1
        timeInterval = currentTime
        updateEachSecond()
    }
}
func updateEachSecond() {
    print("Time:", time, terminator: "s\n")
}
| 归档时间: | 
 | 
| 查看次数: | 1389 次 | 
| 最近记录: |