如何将SKSpriteNode带到所有其他节点的前面?
使用UIView,我可以使用bringSubviewToFront将uiview带到其他视图前面。
答案 0 :(得分:49)
你不能“把它带到前面”,但你可以改变它的zPosition
。
节点zPosition
越高,呈现的越晚。
因此,如果您有三个节点zPositions
为-1,0和1,那么-1将出现在后面。然后是0.然后1将出现在前面。
如果它们都使用0.0的默认zPosition
,那么它们将按照它们出现在父节点的子数组中的顺序呈现。
您可以在文档中阅读所有内容。
答案 1 :(得分:3)
SWIFT 4: 我通常创建枚举来建立zPosition,因此我可以简单地管理不同的层:
enum ZPositions: Int {
case background
case foreground
case player
case otherNodes
}
因此,当您设置新项目时,可以通过以下方式简单地为其赋予zPosition:
button.zPosition = CGFloat(ZPosition.otherNodes.rawValue)
(按钮现在具有最高的zPosition) 希望对您有帮助...
答案 2 :(得分:1)
此扩展程序向SKNode添加bringToFront
方法。这在zPosition
不合适的时候非常棒,而且你想依赖兄弟订购。
extension SKNode {
func bringToFront() {
guard let parent = parent else { return }
removeFromParent()
parent.addChild(self)
}
}
`
答案 3 :(得分:0)
如果您想将节点带到最前面,请使用:
yourNode.zPosition = 1
或者直到后面:
yourNode.zPosition = -1
或与其他节点相同的级别(默认设置为此值):
yourNode.zPosition = 0