我注意到SKNode方法children
和childNodeWithName:
的名称仅表示来自查询节点正下方的子节点的返回结果。即[root children];
将返回包含节点NSArray
的{{1}}。
在下图中,我想从ROOT(SKScene)级别下载到SPHERE2,以便我可以快速访问子节点。我希望@[CUBE1, CUBE2, CUBE3]
遍历整个层次结构并返回指向SPHERE2的指针
我的问题:我有什么遗漏让我跳转到指定点的节点树(即使用节点名称)
我可以使用属性存储指向树中重要位置的指针,然后使用它们来访问和处理任何子节点,这是一个选项......
答案 0 :(得分:12)
您可以使用高级搜索下的SKNode documentation中描述的高级搜索语法。
这将从根节点开始以递归方式搜索名为“SPHERE2”的节点的整个节点树:
SKNode* sphere2 = [root childNodeWithName:@"//SPHERE2"];
如果你知道特定节点的路径,你也可以很容易地使用它:
SKNode* triangle3 = [root childNodeWithName:@"/CUBE3/SPHERE2/TRIANGLE3"];
应该注意的是,如果您经常需要这些节点,则应将它们缓存在__weak
ivar或weak
属性中,因为按名称搜索节点需要一段时间。