如何将SKSpriteNode带到前面?

Phu*_* Ly 31 objective-c sprite-kit skspritenode

如何将SKSpriteNode带到所有其他节点的前面?

使用UIView,我可以使用bringSubviewToFront在其他视图前面显示uiview.

Fog*_*ter 52

你不能"把它带到前面",但你可以改变zPosition它.

zPosition节点越高,呈现的越晚.

因此,如果您有三个节点,分别zPositions为-1,0和1,那么-1将出现在后面.然后是0.然后1将出现在前面.

如果它们都使用默认值zPosition0.0,那么它们将按照它们出现在父节点的children数组中的顺序呈现.

您可以在文档中阅读所有内容.

https://developer.apple.com/documentation/spritekit/sknode

  • 你也可以创建2层(或更多).有一个用于背景,另一个用于玩家等.添加这些的顺序将影响分层,因此首先添加背景图层. (2认同)

Dan*_*Chi 5

环球银行金融电信协会4
\n我通常创建枚举来建立 zPositions,以便我可以简单地管理不同的层:

\n
enum ZPositions: Int {\n    case background\n    case foreground\n    case player\n    case otherNodes\n}\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • \xe2\x80\x9ccase背景\xe2\x80\x9d是下位置,它\xe2\x80\x99s等于默认位置0;
  • \n
  • \xe2\x80\x9c 前景\xe2\x80\x9d = 1
  • \n
  • \xe2\x80\x9c 玩家\xe2\x80\x9d = 2
  • \n
  • \xe2\x80\x9c其他节点\xe2\x80\x9d = 3
  • \n
\n

因此,当你设置一个新项目时,你可以这样简单地给它 zPosition:

\n
button.zPosition = CGFloat(ZPosition.otherNodes.rawValue)\n
Run Code Online (Sandbox Code Playgroud)\n

(按钮现在具有最高的 zPosition)

\n