我的一些动画模型有一个非常大的节点树结构。因此,下面的代码有时可以过滤1000多个节点。如果我这么快,它可能会淹没我的应用程序。有没有办法将rootNode搜索限制在一两个顶层,而不是整个树结构?
self.sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
if node.name == "myRootNode" {
//This is the node to manipulate
}
}
这是一个如何过滤rootNode(包含场景设置中所有节点的节点(的示例。它将只过滤rootNode。
您可以在任何childNode上运行相同的过滤方法(根据需要(
sceneView.scene?.rootNode.childNodes.filter({ $0.name == "yourNodeName" }).forEach({
// $0 is your filtered node
print($0.name)
})
如果只想搜索顶级,请使用func childNode(withName name: String, recursively: Bool)
。如果你想搜索两个级别:
if let node = self.sceneView.scene.rootNode.childNode(withName: "myRootNode", recursively: false) {
// Do whatever you need to do
} else {
for node in self.sceneView.scene.rootNode.children {
if let node = node.childNode(withName: "myRootNode", recursively: false) {
// Do whatever you need to do
break
}
}
}