我一直在尝试将节点树呈现为SKTexture
,作为另一个问题here的可能解决方案。我试着寻找答案,我遇到了Apple的一个开发者页面(查看here)。它说将节点树转换为SKTexture
的命令是:
func texture(from node: SKNode) -> SKTexture?
虽然代码不完整,因为没有代码执行节点树到SKTexture
的转换。我做错了什么或完整的代码是什么,我应该用它来将节点树渲染成SKTexture
。
感谢您的任何建议,帮助和解答!
答案 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)
}