Swift 3(SpriteKit):从节点树创建纹理

时间:2017-01-09 02:38:07

标签: swift tree sprite-kit sknode sktexture

我一直在尝试将节点树呈现为SKTexture,作为另一个问题here的可能解决方案。我试着寻找答案,我遇到了Apple的一个开发者页面(查看here)。它说将节点树转换为SKTexture的命令是:

func texture(from node: SKNode) -> SKTexture?

虽然代码不完整,因为没有代码执行节点树到SKTexture的转换。我做错了什么或完整的代码是什么,我应该用它来将节点树渲染成SKTexture

感谢您的任何建议,帮助和解答!

1 个答案:

答案 0 :(得分:2)

texture(from:)SKView的实例方法,它将一个节点(具有零个或多个子节点)作为参数并返回一个可选的SKTexture。由于返回的值是可选的,因此您需要在使用它之前将其解包。

didMove(to:),您可以使用view参数创建纹理

if let texture = view.texture(from: node) {
    let sprite = SKSpriteNode(texture:texture)
    addChild(sprite)
}

SKScene子类中的其他方法,使用可选链接

if let texture = self.view?.texture(from: node) {
    let sprite = SKSpriteNode(texture:texture)
    addChild(sprite)
}

您还可以使用

渲染节点树内容的一部分
let rect = CGRect(x:-width/2, y:-height/2, width:width, height:height)
if let texture = self.view?.texture(from: node, crop: rect) {
    let sprite = SKSpriteNode(texture:texture)
    addChild(sprite)
}
相关问题