如何打印节点名称

时间:2017-10-29 08:21:05

标签: swift sprite-kit nodes scene

im for swift sprite kit我只是学习节点和这些东西。当我玩节点时,我想知道如何打印以控制我当前在场景中拥有的节点的所有名称。我阅读并尝试enumerateChildNodes,但我没有做到这一点并且在这样做时失败了。 有什么选择可以做我试图做的事情吗?

1 个答案:

答案 0 :(得分:0)

如果要访问场景中的所有节点,可以定义访问方法

import SpriteKit

extension SKNode {
    func visit() {
        print(self.name)
        children.forEach { $0.visit() }
    }
}

最后在你的场景中写下

class Scene:SKScene {

    override func didMove(to view: SKView) {
        super.didMove(to: view)

        visit() // <--
    }
}

实施例

let scene = Scene()
scene.name = "scene"
let a = SKNode()
a.name = "a"
let b = SKNode()
b.name = "b"
let c = SKNode()
c.name = "c"
let d = SKNode()
d.name = "d"

a.addChild(b)
b.addChild(c)

scene.addChild(a)
scene.addChild(d)

scene.visit()

结果

Optional("scene")
Optional("a")
Optional("b")
Optional("c")
Optional("d")