使用 SKSpriteNode 和纹理图集的高 SpriteKit 绘制计数

High SpriteKit draw count with SKSpriteNode & texture atlas

我有一个 SpriteKit 游戏,其中有弹跳的球。尽管使用了纹理图集(位于我的 .xcassets 文件夹中的 .spriteatlas 文件夹),我为每个球获得 2 个绘制调用

一些事实:

  1. 这些球是 SKSpriteNode 个。
  2. 每个球都是一个具有子节点的父节点(与球相反旋转的叠加层以提供 lighting/shadow 的错觉)。所以,我们说的是每个球有 2 个节点。
  3. 球的纹理预先加载并通过 textureNamed(_:) 存储在内存中。
  4. 我设置了view.ignoresSiblingOrder = true.
  5. 没有 SpriteKit 背景图像可以使球在另一个节点上渲染;背景是透明的。所以,球不会与其他内容重叠。
  6. zPosition 未设置 -- 不在父项上,也不在子项上。

根据我 learned 关于场景渲染方式的了解,我希望看到所有父节点在单次渲染过程中渲染,子节点有额外的渲染过程(尽管如此,即便如此很可疑,因为我将 ignoresSiblingOrder 设置为 true).

这里我有什么不明白的?为什么在场景中添加更多球时我的抽奖次数会急剧增加?

谢谢!

更新:

如果我不将子节点添加到球中,则无论有多少球,球的绘制计数都是 1。所以,这绝对是子节点的问题,而不是父节点。

我通过在父项和子项上将 zPosition 设置为相同的值解决了这个问题。

parentNode.zPosition = 1.0
childNode.zPosition = 1.0

现在有一个 总共 2 次抽球,无论有多少球。