SpriteKit:找到某个类的 SKNode 的所有后代?

Cra*_*lot 5 ios sprite-kit sknode swift

这个问题展示了如何找到属于某个类的 SKNode 的所有子节点,但是如果我们想要属于某个类的所有后代(例如,孙子节点)呢?

在 SpriteKit 中是否有一种本机方法可以做到这一点,还是从上述问题中创建递归形式的唯一选择?

SKNode 文档突出显示了一个搜索功能,可以让您找到具有特定名称的后代,但是有没有办法按类而不是名称过滤后代?如果可以避免,我们不想为节点分配名称。

我们正在使用 Swift 3。

Cra*_*lot 4

我们所做的是将一个块传递给 SKNode 函数,该函数按名称查找节点,并用作*搜索项以避免为所需节点分配名称。

    var descendants = [CustomClass]()
    nodeToSearch.enumerateChildNodes(withName: ".//*") { node, stop in
        if node is CustomClass {
            descendants.append(node as! CustomClass)
        }
    }
Run Code Online (Sandbox Code Playgroud)