Swift SpriteKit:将多个SKSpriteNodes添加到场景中

Swift SpriteKit:将多个SKSpriteNodes添加到场景中,swift,sprite-kit,skspritenode,scene,Swift,Sprite Kit,Skspritenode,Scene,我有一个图像,它应该被多次添加到场景中,直接排成一行(如墙)。为此,我提出了一个简单的算法来改变x和y坐标 func addBackground(){ bg = SKSpriteNode(imageNamed: "background") let fieldsX = 5 let fieldsY = 8 var xPos = CGFloat() var yPos = CGFloat() let fieldsWidth = screenWidt

我有一个图像,它应该被多次添加到场景中,直接排成一行(如墙)。为此,我提出了一个简单的算法来改变x和y坐标

    func addBackground(){
    bg = SKSpriteNode(imageNamed: "background")
    let fieldsX = 5
    let fieldsY = 8
    var xPos = CGFloat()
    var yPos = CGFloat()
    let fieldsWidth = screenWidth / CGFloat(fieldsX)
    let sumField = fieldsX * fieldsY

    bg.size = CGSize(width: fieldsWidth, height: fieldsWidth)
    for(var i = 0; i < sumField; i++){
        bg.position = CGPoint(x: xPos, y: yPos)
        self.addChild(bg)
        xPos = xPos + fieldsWidth
        if(i % fieldsX == 0){
            yPos = yPos + fieldsWidth
            xPos = 0
        }
    }
}
func addBackground(){
bg=SKSpriteNode(图像名为“背景”)
设fieldsX=5
设fieldsY=8
var xPos=CGFloat()
var yPos=CGFloat()
让fieldsWidth=屏幕宽度/CGFloat(fieldsX)
设sumField=fieldsX*fieldsY
bg.size=CGSize(宽度:fieldsWidth,高度:fieldsWidth)
对于(变量i=0;i

让我给你解释一下我的代码。首先,我用图像创建一个SKSpriteNode。之后,我需要用几个变量来填充场景。所以我希望图像在x轴上显示5次,在y轴上显示8次。为了确保它们大小相同,它们是正方形的。每次在for循环中,x坐标都会升高屏幕的1/5。每5次循环,x坐标会被重置,y坐标会高出屏幕的1/8。总之,应该创建40个节点并将其添加到场景中。当我运行程序时,由于未捕获的异常,AppDelegate中出现错误。它还说:试图添加一个已经有父节点的SKNode。有没有一种方法可以将40个节点添加到场景中而不出错?

如果没有向场景中添加很多节点,则尝试将一个节点添加40次,这就是为什么在第二次添加节点时,它有一个父节点,而您得到了错误。您需要在“for”中创建有意义的节点对象

。它解决了这个问题。非常感谢。