Swift Spritekit - 如果已经添加了相同的精灵,则将其添加到场景时会出现问题

Swift Spritekit - Problems adding the same sprite to the scene if one is already added

我的 SKScene 使用以下代码以特定时间间隔将精灵添加到屏幕,但是如果在添加下一个精灵时屏幕上已经有一个精灵,我的应用程序会冻结。有没有办法在不冻结应用程序的情况下将相同的精灵添加到屏幕?

let timer = SKAction.waitForDuration(1.00)
let addSpriteNode = SKAction.runBlock{
    self.addSprite()        
}

let sequence = SKAction.sequence([timer, addSpriteNode])
self.runAction(SKAction.repeatActionForever(sequence), withKey: "Sprites")

注意:我目前使用的计算机不支持 运行 Xcode,所以我的内存不足。

注意 2:如果我可以发表评论,我会要求您包括位于 addSprite 函数中的代码。但是,由于缺乏声誉,我无法这样做。通过包含该代码,您可以获得更快、更准确的答案,因为这是创建和添加精灵的代码。

回答: 您提到您正在尝试将相同的精灵添加到屏幕 - 可能是这样的:

let sprite = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(50,50))
func addSprite() {
    addChild(sprite)
}

同一个精灵不能多次出现在屏幕上。相反,每次您想要将一个新精灵添加到屏幕时,您都必须创建一个新精灵。在你的 addSprite 函数中,你的代码应该创建一个新的精灵,设置它的属性,然后将它添加到主视图中,如下所示:

fun addSprite() {
    let sprite = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(50,50)) // Creates a new sprite. You can customize this as needed.
    addChild(sprite) // Adds newly created sprite to screen.
}

希望对您有所帮助。如果您 post 您的代码,我可以提供更适合您问题的答案。