如何在 while 循环 spritekit 内生成之前等待

how to wait before spawning inside while loop spritekit

代码的目标是生成卡片,直到卡片总数达到 17。代码在这种情况下工作正常,但我希望它在生成另一张卡片之前等待 1 秒。该代码目前立即生成所有卡片(并在达到 17 之前停止),这是我不想要的。这是一个简化版本,供参考,它在 SpriteKit 中的 touchesBegan:

else if standLabel.contains(touch.location(in: self)) {
                let waitForCard = SKAction.wait(forDuration: 1)
                while dealerCardValues.sum() <= 16 {
                    self.run(waitForCard)

                    spawnCard()
                    

                }

等待时间无效。感谢任何帮助。

您可以为此使用定时器。计时器每 1 秒调用一次,它运行 spawnCard() 函数并将计数器变量加 1。一旦 counter 达到 17,我们就会使其无效以阻止它再次触发。

所以替换这段代码:

let waitForCard = SKAction.wait(forDuration: 1)
            while dealerCardValues.sum() <= 16 {
                self.run(waitForCard)

                spawnCard()

有了这个:

  var counter = 1
  
  Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [self] timer in
    
    counter += 1
    spawnCard()
    
    if counter == 17 {
      timer.invalidate()
    }
    
  }