如何创建SKSpriteNode的图像?

时间:2017-09-24 13:17:01

标签: sprite-kit skspritenode 2d-games

我有一个带有很多子节点的 SKSpriteNode 。 我在游戏中经常使用该节点和所有孩子。

更好的方法是与所有子节点一起构建此节点,创建一个图像( SKTexture )并使用创建的纹理,而不是重新创建SKSpriteNode及其所有子节点。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

SKEffectNode& shouldRasterize

您可以SKEffectNode我们将shouldRasterize设置为true

let effectNode = SKEffectNode()
effectNode.shouldRasterize = true
scene.addChild(effectNode)
  

SKEffectNode的输出在内部进行栅格化和缓存。渲染时重用此缓存。

现在只需将精灵添加到effectNode

effectNode.addChild(sprite0)
effectNode.addChild(sprite1)
effectNode.addChild(sprite2)

第一次渲染effectNode时,生成的图像将自动缓存。 缓存版本将用于下一帧。

答案 1 :(得分:0)

实际上有一种非常简单的方法可以做到这一点。我一直这样做将ShapeNodes转换为SpriteNodes(因为每个形状需要1个绘图调用,而精灵不需要)

let texture = SKView().texture(from: desiredNode)
let newSprite = SKSpriteNode(texture: texture)

或者,在你的游戏中为了简洁起见:
let newSprite = SKSpriteNode(texture: view!.texture(from: desiredNode))