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 您的代码,我可以提供更适合您问题的答案。
我的 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 您的代码,我可以提供更适合您问题的答案。