在 for 循环中更改 SKNode 子节点的属性

Change properties for children of SKNode in a for loop

我知道 SKNode 的子节点 属性 是只读的 属性。不过,有没有一种方法可以在遍历子项时更改这些子项的属性?

例如:

let background = SKSpriteNode(imageNamed: "Background.jpg")   
for child in background.children{
     child.position = CGPoint(x: 0, y: 0)
}

您可以将 child 转换为 SKNode,然后更改位置。

for child in self.children {
    if let sprite = child as? SKNode {
        sprite.position = CGPoint(x: 0, y: 0)
    }
}

children 属性 是只读的,因此您不能使用此 属性 添加或删除元素(子元素)(有特定的方法可以做到) .

但是您可以修改 background.children.

中元素的某些属性
for child in background.children as [SKNode] {
    child.position = CGPoint(x: 0, y: 0)
}

background.children 铸造为 [SKNode] 是安全的,并由 documentation.

保证