Sprite kit 如何使用Swift在精灵套件游戏中创建NSTimer?

Sprite kit 如何使用Swift在精灵套件游戏中创建NSTimer?,sprite-kit,xcode8,swift4,Sprite Kit,Xcode8,Swift4,在单视图控制器应用程序中,可以使用: Foundation.Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(GameViewController.updateFunction), userInfo: nil, repeats: true) 但是,当您在Spritekit游戏中使用该代码时,它会出现错误并且不起作用 我能用什么来工作呢?只需像这样启动计时器: class GameScene: SK

在单视图控制器应用程序中,可以使用:

Foundation.Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(GameViewController.updateFunction), userInfo: nil, repeats: true)
但是,当您在Spritekit游戏中使用该代码时,它会出现错误并且不起作用


我能用什么来工作呢?

只需像这样启动计时器:

class GameScene: SKScene{

    var timer: Timer!

    override func didMove(to view: SKView) {
         timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(self.yourFunction), userInfo: nil, repeats: true)
    }

    @objc func yourFunction(){
        print("timer function")
    }

    func goToAnotherScene(){
        timer.invalidate()
    }
}

请注意,您需要在函数之前设置@objc,我建议您远离NSTimer/Timer。SpriteKit有自己的计时功能,让NSTimer/Timer无bug工作是一个巨大的麻烦和任务。使用SKAction可满足99%的计时需求。如果您提供了代码,我将能够更好地帮助您提供正确的答案。

您会遇到哪些错误?我在我的Spritekit游戏中也使用了计时器,它工作得很好。你如何使用它?我的主要错误似乎是选择器。谢谢,这是我的问题!仅供参考如果您离开应用程序,此代码将中断/得到不正确的结果