我注意到SKNode方法children和childNodeWithName:名称暗示只返回查询节点正下方的子节点的结果.即[根儿童];将返回包含节点@ [CUBE1,CUBE2,CUBE3]的NSArray.
在下图中,我想从ROOT(SKScene)级别下载到SPHERE2,以便我可以快速访问子节点.我希望[root childNodeWithName:@“SPHERE2”];将遍历整个层次结构并返回指向SPHERE2的指针@H_502_3@
解决方法
您可以使用高级搜索下的
SKNode documentation中描述的高级搜索语法.
这将从根节点开始,以递归方式搜索名为“SPHERE2”的节点的整个节点树:@H_502_3@
SKNode* sphere2 = [root childNodeWithName:@"//SPHERE2"];
如果您知道特定节点的路径,您也可以非常轻松地使用它:@H_502_3@
SKNode* triangle3 = [root childNodeWithName:@"/CUBE3/SPHERE2/TRIANGLE3"];
应该注意的是,如果您经常需要这些节点,则应将它们缓存在__weak ivar或weak属性中,因为按名称搜索节点需要一些时间.@H_502_3@