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

Ios 跳转到节点层次结构中的特定节点,ios,objective-c,sprite-kit,sknode,Ios,Objective C,Sprite Kit,Sknode,我注意到SKNode方法children和childNodeWithName:,顾名思义,它们只从查询节点正下方的子节点返回结果。i、 e.[根子项]将返回一个包含节点的@[CUBE1,CUBE2,CUBE3]的NSArray 在下面的图中,我想从根(SKScene)级别下到SPHERE2,以便快速访问该节点的子节点。我希望[root childNodeWithName:@“SPHERE2”]将遍历整个层次结构并返回指向SPHERE2的指针 我的问题:我是否错过了一些可以让我在指定点跳入节点树

我注意到SKNode方法
children
childNodeWithName:
,顾名思义,它们只从查询节点正下方的子节点返回结果。i、 e.
[根子项]
将返回一个包含节点的
@[CUBE1,CUBE2,CUBE3]
NSArray

在下面的图中,我想从根(SKScene)级别下到SPHERE2,以便快速访问该节点的子节点。我希望
[root childNodeWithName:@“SPHERE2”]将遍历整个层次结构并返回指向SPHERE2的指针

我的问题:我是否错过了一些可以让我在指定点跳入节点树(即使用节点名称)的内容


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

您可以使用高级搜索下的中描述的高级搜索语法

这将在整个节点树中递归搜索名为“SPHERE2”的节点,从根节点开始:

SKNode* sphere2 = [root childNodeWithName:@"//SPHERE2"];
如果您知道特定节点的路径,也可以非常轻松地使用该路径:

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

需要注意的是,如果您经常需要这些节点,您应该将它们缓存在
\uu-weak
ivar或
weak
属性中,因为按名称搜索节点需要一段时间。

很好,我不知道我怎么会错过这些内容。非常感谢Steffen,感谢您的提醒。好的,但是当我们不知道“我”在树中的位置时,如何查找节点“我”的所有名为“MyChildren”的子节点?您可以使用“//Me/MyChildren”在整个树中搜索父节点名为“我”的名为“MyChildren”的节点。