我正在编写一个助手方法来显示iOS上SpriteKit应用程序中所有物理交互(碰撞和接触)的摘要。
我有一个简单的场景,有一个边界(从
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: frame)
)和3个简单形状(2个正方形和一个圆形),它们通过
addChild()
在我的助手函数中,我想搜索所有节点,如果它们有physicsBody,则打印它们的类别、碰撞和contactTest位掩码。
如果我编写以下代码:
enumerateChildNodesWithNeme("*") { node, _ in {
print("Node: \(node.name)")
}
那么我只列出了3个形状:
Node: Optional("shape_blueSquare")
Node: Optional("shape_redCircle")
Node: Optional("shape_purpleSquare")
我的场景的physicsBody没有返回。但如果我使用:
enumerateChildNodesWithNeme("..") { node, _ in {
print("Node: \(node.name)")
}
然后我得到:
Node: Optional("shape_edge")
如果我使用:
enumerateChildNodesWithNeme("..//") { node, _ in {
print("Node: \(node.name)")
}
我什么都没有得到,但我认为这会将节点树向上移动到场景,然后递归地返回所有子节点。搜索参数
"//*"
也只返回3个孩子。
节点计数始终由
skView.showNodecount = true
是
4
.
所以我的问题是:enumerateChildNodesWithName的搜索参数是否会返回场景中的所有节点(包括场景本身),或者我是否误解了场景和它的子节点之间的关系,因为一次搜索不能同时搜索这两个节点?可能是后者,因为
print("\(parent.children)")
返回
nil
,当我期待看到
self
或其某种变体。