使用 SKSpriteNode 和纹理图集的高 SpriteKit 绘制计数
High SpriteKit draw count with SKSpriteNode & texture atlas
我有一个 SpriteKit 游戏,其中有弹跳的球。尽管使用了纹理图集(位于我的 .xcassets 文件夹中的 .spriteatlas 文件夹),我为每个球获得 2 个绘制调用。
一些事实:
- 这些球是
SKSpriteNode
个。
- 每个球都是一个具有子节点的父节点(与球相反旋转的叠加层以提供 lighting/shadow 的错觉)。所以,我们说的是每个球有 2 个节点。
- 球的纹理预先加载并通过
textureNamed(_:)
存储在内存中。
- 我设置了
view.ignoresSiblingOrder = true
.
- 没有 SpriteKit 背景图像可以使球在另一个节点上渲染;背景是透明的。所以,球不会与其他内容重叠。
zPosition
未设置 -- 不在父项上,也不在子项上。
根据我 learned 关于场景渲染方式的了解,我希望看到所有父节点在单次渲染过程中渲染,子节点有额外的渲染过程(尽管如此,即便如此很可疑,因为我将 ignoresSiblingOrder
设置为 true
).
这里我有什么不明白的?为什么在场景中添加更多球时我的抽奖次数会急剧增加?
谢谢!
更新:
如果我不将子节点添加到球中,则无论有多少球,球的绘制计数都是 1。所以,这绝对是子节点的问题,而不是父节点。
我通过在父项和子项上将 zPosition
设置为相同的值解决了这个问题。
parentNode.zPosition = 1.0
childNode.zPosition = 1.0
现在有一个 总共 2 次抽球,无论有多少球。
我有一个 SpriteKit 游戏,其中有弹跳的球。尽管使用了纹理图集(位于我的 .xcassets 文件夹中的 .spriteatlas 文件夹),我为每个球获得 2 个绘制调用。
一些事实:
- 这些球是
SKSpriteNode
个。 - 每个球都是一个具有子节点的父节点(与球相反旋转的叠加层以提供 lighting/shadow 的错觉)。所以,我们说的是每个球有 2 个节点。
- 球的纹理预先加载并通过
textureNamed(_:)
存储在内存中。 - 我设置了
view.ignoresSiblingOrder = true
. - 没有 SpriteKit 背景图像可以使球在另一个节点上渲染;背景是透明的。所以,球不会与其他内容重叠。
zPosition
未设置 -- 不在父项上,也不在子项上。
根据我 learned 关于场景渲染方式的了解,我希望看到所有父节点在单次渲染过程中渲染,子节点有额外的渲染过程(尽管如此,即便如此很可疑,因为我将 ignoresSiblingOrder
设置为 true
).
这里我有什么不明白的?为什么在场景中添加更多球时我的抽奖次数会急剧增加?
谢谢!
更新:
如果我不将子节点添加到球中,则无论有多少球,球的绘制计数都是 1。所以,这绝对是子节点的问题,而不是父节点。
我通过在父项和子项上将 zPosition
设置为相同的值解决了这个问题。
parentNode.zPosition = 1.0
childNode.zPosition = 1.0
现在有一个 总共 2 次抽球,无论有多少球。