使 spriteNode 淡出

Making a spriteNode fade away

Swift5,iOS14

编写此代码以在 sprite 节点中淡入淡出...工作正常,但 Xcode 这么说,这没有意义,因为我在循环中使用计时器。

Initialization of immutable value 'timer' was never used; consider replacing with assignment to '_' or removing it

let timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { timer in
            node2Delete?.alpha -= 0.1
            ghost.alpha += 0.1
            if node2Delete?.alpha == 0 {
              node2Delete?.removeFromParent()
              timer.invalidate()
            }
          }

而且它不会抱怨循环内的定时器没有被定义?这是一个错误还是我遗漏了什么?

有更好的方法吗?我这里设置的定时器真的被取消了吗?

你想在这里使用 SKAction 而不是 Timer,所以你可以用下面的代码替换你的所有代码。

创建两个保存淡入淡出逻辑的变量,一个用于淡入,另一个用于淡出。 运行 fadeIn 在您的 ghost 节点上。幽灵节点将在 5 秒内逐渐出现。 运行 fadeOut 在您的 node2Delete 节点上,这将在 5 秒内逐渐将 alpha 淡化为 0。完成后,我们将节点从其父节点中删除。

  let fadeOut = SKAction.fadeAlpha(to: 0.0, duration: 5.0)
  let fadeIn = SKAction.fadeAlpha(to: 1.0, duration: 5.0)
  
  ghost.run(fadeIn)
  
  node2Delete.run(fadeOut){
    self.node2Delete.removeFromParent()
  }