跳转到节点层次结构中的特定SKNode
我注意到,SKNode方法children
和childNodeWithName:
顾名思义只是从被查询的节点正下方的子节点返回结果。 即[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节点需要一点时间。