我正在做一个有20个精灵的项目,我注意到很多代码重复。我的精灵被命名为:精灵1,精灵2,精灵3。。。。所以我在寻找一种基于两个变量引用精灵的方法。第一个是“sprite”,第二个是整数,所以我可以随时更改或循环一个范围。有可能做这样的事吗?
随机示例:

x = 1
while x <= 10 {
        sprite & x.physicsBody.affectedByGravity = true
        x++
}

而不是:
sprite1.physicsBody.affectedByGravity = true
sprite2.physicsBody.affectedByGravity = true
sprite3.physicsBody.affectedByGravity = true
sprite4.physicsBody.affectedByGravity = true
sprite5.physicsBody.affectedByGravity = true

等等。。。

最佳答案

这可以简单到:

for sprite in [sprite1, sprite2, sprite3, /* ... */] {
    sprite.physicsBody.affectedByGravity = true
}

然而,有一堆局部变量(或实例变量)如sprite1sprite2等表明您没有以其他方式很好地使用工具。这些雪碧有什么意义?有没有方法可以使用场景结构来更好地管理它们?
例如,如果要为其启用重力的所有节点都是同一父节点的子节点,则可以执行以下操作:
for sprite in someContainerNode.children {
    sprite.physicsBody.affectedByGravity = true
}

或者,如果场景中有一些节点子集需要执行此操作,则可以为它们指定相同的名称(例如,在Xcode中的SpriteKit场景编辑器中),并使用该名称查找它们:
scene.enumerateChildNodesWithName("needsGravity") { node, stop in
    node.physicsBody.affectedByGravity = true
}

10-07 19:51
查看更多