如何使用 swift 在 xcode spritekit 中保持 space 游戏中入侵者的节点数稳定?

How to keep node count of invaders in space game stable in xcode spritekit with swift?

我正在编写一个 space 游戏,其中敌人在屏幕外的随机位置生成,但是当节点数增加时我卡住了,因为我在 func override update()

然后我决定将所有的敌人精灵放在一个数组中,并删除那些离开屏幕的精灵。

有没有更有效的方法? 提前致谢!

特别是我认为将这段代码放在更新函数上不是一个好主意,因为它会 运行 你的代码在渲染每一帧之前...所以它会 运行 就像 60每秒次数。

更好的解决方案是创建一个函数来生成敌人并使用计时器调用它。首先在你的 class 中声明一个变量来处理敌人数量和计时器:

var enemies = 0
var enemyTimer = Timer()


func spawn(){
//YOUR SPAWN CODE
enemies += 1 //Will increase 1 enemy to the enemies variable every time this function is called
}

开始计时:

 enemyTimer = Timer.scheduledTimer(timeInterval: YOUR TIME INTERVAL TO SPAWN ENEMIES, target: self, selector: #selector(YOUR_CLASS_NAME.spawn), userInfo: nil, repeats: true)

在游戏开始时启动计时器,在游戏结束和移动到另一个场景时使它失效! 此计时器将每 "n" 秒调用一次生成函数!

关于跳出画面你可以使用更新功能:

      if scene?.frame.contains(enemyNode.position){
        //nothing here
    }else{
//Out of screen, do stuff here...
enemyNode.removeFromParent()
}