简体   繁体   中英

Swift 3 (SpriteKit): Create a texture from a node tree

I have been trying to render a node tree into an SKTexture as a possible solution to another question here . I tried searching for an answer to this, and I came across one of Apple's Developer pages (view it here ). It says the command which converts a node tree into an SKTexture is this:

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

Although, the code is incomplete since there is no code which executes the conversion of a node tree to an SKTexture . Am I doing something wrong or what is the complete code that I should use to render a node tree into an SKTexture .

Thanks for any advice, help, and answers!

texture(from:) is an instance method of SKView that takes a node (with zero or more children) as a parameter and returns an optional SKTexture . Since the returned value is an optional, you'll need to unwrap it before using it.

From didMove(to:) , you can use the view parameter to create a texture

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

From other methods in the SKScene subclass, use optional chaining

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

You can also render the portion of the node-tree's contents inside of a rectangle with

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)
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM