我的场景视图中有很多节点,包括标准的“焦点正方形”(该节点可帮助用户放置对象,并在用户移动电话时位于表面上)。除了那一个,我想删除所有这些。
s1
这是我删除除焦点正方形以外的所有节点的方法:
class FocusSquare: SCNNode {
// MARK: - Types
enum State: Equatable {
case initializing
case detecting(hitTestResult: ARHitTestResult, camera: ARCamera?)
}
...
// Find code here: https://github.com/BlackMirrorz/ARKitWorldMaps/tree/c7ea837006e26ec7d8542ad2d3c417d5fd3910d5/CloudCube/CloudCube/Apple%20Focus%20Square
}
但是,即使我正在检查节点类,这也确实会删除焦点正方形。为什么我不能删除特定节点?
我认为问题在于删除此处的节点无法像视图一样工作。对于如何在场景视图中添加节点,没有“层次结构”。我不确定。这是将焦点正方形添加到视图的方式:
sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
if let node = node as? FocusSquare {
print("should not remove node") // fired once, however it still gets deleted
} else {
node.removeFromParentNode()
}
}
答案 0 :(得分:1)
我实际上不是在尝试找到焦点正方形,而是在尝试找到其他自定义节点类:
sceneView.scene.rootNode.enumerateChildNodes { (node, stop) in
if node is TranslationNode {
node.removeFromParentNode()
}
}
这很好。
答案 1 :(得分:0)
我不是SceneKit的专家,但是如果FocusSquare是另一个节点的子节点,那么在枚举过程中也可以删除此(FocusSquare父级),从而也可以删除FocusSquare。
将FocusSquare添加到rootNode可以解决该问题吗?
希望这个答案有所帮助。