Swift SpriteKit-如何获取在insertChild中使用的SKNode索引
我在我的场景中添加了大量相同的SKSpriteNodes,它们都具有相同的zPosition,根据它们添加到场景中的顺序层叠在一起。我需要能够选择一个SKSpriteNode,并在同一索引处添加另一个(加或减)。我知道我可以使用Swift SpriteKit-如何获取在insertChild中使用的SKNode索引,swift,sprite-kit,skspritenode,sknode,Swift,Sprite Kit,Skspritenode,Sknode,我在我的场景中添加了大量相同的SKSpriteNodes,它们都具有相同的zPosition,根据它们添加到场景中的顺序层叠在一起。我需要能够选择一个SKSpriteNode,并在同一索引处添加另一个(加或减)。我知道我可以使用scene.insertChild(mySpriteNode,atIndex:index)但是如何从SKNode或SKSpriteNode获取索引?我已经浏览了文档,在网上,我肯定遗漏了一些东西,看起来很简单!我的理想解决方案: scene.insertChild(myS
scene.insertChild(mySpriteNode,atIndex:index)
但是如何从SKNode或SKSpriteNode获取索引?我已经浏览了文档,在网上,我肯定遗漏了一些东西,看起来很简单!我的理想解决方案:
scene.insertChild(mySpriteNode,atIndex:someSpriteNode.siblingIndex)
但我在SKNode上没有看到类似siblingIndex的属性,或者它可能被称为indexInParent
我想我可以对添加到场景中的每个节点进行计数,并将其子类化为SKSpriteNode并设置自己的索引,但我在两个不同的位置添加节点。如果我以后尝试更改代码,这将是乏味的,而且很容易被破坏
也许我可以在场景中遍历整个children数组属性,直到找到我正在搜索的节点,但是这非常昂贵而且效率低下
使用zPosition并不理想,因为我在应用程序的其他几层中使用zPosition,并且可以添加的SkSpritodes的数量是无限的,所以最终我会突破到下一层
希望有人告诉我,我只是忽略了这个财产的某个地方!
感谢您的帮助,谢谢 抱歉,没有对sknode或SKScene的命令。您在子类化和添加自己的自定义顺序/索引方面可能是正确的。我不认为有直接的方法来确定子级的索引。我认为您唯一的选择是迭代场景的子对象(如您所提到的)。您可以使用
let index=find(self.children as[SKNode],sprite)
执行此操作,它返回可选的Int
。