7

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

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

在此处输入图像描述

我的问题:有什么我错过的东西可以让我在指定点跳入节点树(即使用节点名称)

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

4

1 回答 1

12

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

这将从根节点开始递归搜索整个节点树以查找名为“SPHERE2”的节点:

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

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

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

请注意,如果您经常需要这些节点,则应将它们缓存在__weakivar 或weak属性中,因为按名称搜索节点需要一些时间。

于 2013-10-31T15:17:46.253 回答