跳转到节点层次结构中的特定SKNode

我注意到,SKNode方法childrenchildNodeWithName:顾名思义只是从被查询的节点正下方的子节点返回结果。 即[root children]; 将返回包含节点@[CUBE1, CUBE2, CUBE3]NSArray

在下面的图表中,我想从ROOT(SKScene)级别向下到SPHERE2,这样我就可以快速访问这个节点的子节点。 我希望[root childNodeWithName:@"SPHERE2"]; 将遍历整个层次并返回一个指向SPHERE2的指针

在这里输入图像说明

我的问题:有没有什么我错过了,让我跳进一个指定点的节点树(即使用节点名称)

我可以使用属性来存储指向树中重要位置的指针,然后使用它们来访问和处理任何子节点,所以这是一个选项。

您可以使用高级search下的SKNode文档中所述的高级search语法。

这将会从根节点开始recursion地search整个节点树中名为“SPHERE2”的节点:

 SKNode* sphere2 = [root childNodeWithName:@"//SPHERE2"]; 

如果你知道特定节点的path,你也可以很容易地使用它:

 SKNode* triangle3 = [root childNodeWithName:@"/CUBE3/SPHERE2/TRIANGLE3"]; 

需要注意的是,如果你经常需要这些节点,你应该将它们caching在__weak ivar或weak属性中,因为按名称search节点需要一点时间。