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