将 SKSpriteNode 转换为 UIImage

cast SKSpriteNode to UIImage

我想将 SKSpriteNode 转换为 UIImage。

let testImage = SKSpriteNode(imageNamed: "PlainProject") as! UIImage

但是我在上面的线程上遇到了崩溃。还有其他方法吗?

你不能直接这样做。

首先你需要从 SKSpriteNode.

得到 texture

之后你可以使用 textureOfNode!.cgImage() 获取图像,如下例所示:

let testNode = SKSpriteNode(imageNamed: "Spaceship")
let textureOfNode = testNode.texture
let imageFromTexture = UIImage.init(cgImage: textureOfNode!.cgImage())
print(imageFromTexture) //<UIImage: 0x61000008afa0>, {394, 347}

你应该先获取精灵的texturecgImage,然后再投射到UIImage:

let testImage = SKSpriteNode(imageNamed: "someImage.png")
let image = UIImage(cgImage: (testImage.texture?.cgImage())!)

或没有 force-unwraping 的更好版本 cgImage 可能是 nil:

let image = UIImage()
if testImage.texture?.cgImage() != nil{
    image = UIImage(cgImage: (testImage.texture?.cgImage())!)
}

结果(操场上):

这正是我的形象。希望这对您有所帮助!