如何在Spritekit中创建一个计时器?

我已经想出了如何在单视图应用程序中创建计时器,但不是Spritekit。 当我使用以下代码时,我得到2个错误(如下所列)。 任何人都可以帮我解决这个问题吗? 谢谢,杰克。

计时器。

if(!_scorelabel) { _scorelabel = [SKLabelNode labelNodeWithFontNamed:@"Courier-Bold"]; _scorelabel.fontSize = 200; _scorelabel.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); _scorelabel.fontColor = [SKColor colorWithHue: 0 saturation: 0 brightness: 1 alpha: .5]; [self addChild:_scorelabel]; } _scorelabel = [NSTimer scheduledTimerWithTimeInterval: 1 target:self selector:@selector(Timercount)userInfo: nil repeats: YES]; 

错误

 Incompatible pointer types assigned to 'SKLabelNode*' from 'NSTimer*' Undeclared selector 'Timercount' 

在Swift中可用:

在Sprite Kit中不要使用NSTimer, GCD or performSelector:afterDelay:因为这些计时方法忽略了节点,场景或视图的暂停状态。 此外,您不知道它们在游戏循环中的哪个位置执行会导致各种问题,具体取决于您的代码实际执行的操作。

 var actionwait = SKAction.waitForDuration(0.5) var timesecond = Int() var actionrun = SKAction.runBlock({ timescore++ timesecond++ if timesecond == 60 {timesecond = 0} scoreLabel.text = "Score Time: \(timescore/60):\(timesecond)" }) scoreLabel.runAction(SKAction.repeatActionForever(SKAction.sequence([actionwait,actionrun]))) 

您正在将您创建的NSTimer分配给SKLabelNode 。 要修复第一个错误,请将最后一行更改为:

 [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(Timercount) userInfo:nil repeats:YES]; 

您收到第二个错误,因为您正在设置计时器以调用名为Timercount的方法,但您没有。