2015-12-30 228 views
1

我在SpriteKit中创建了一个垂直滚动游戏,我想在游戏结束时截取整个游戏场景的屏幕截图,包括已经滚动屏幕的部分。到目前为止,我只能捕捉到使用以下内容可见的部分屏幕:SpriteKit屏幕截图的屏幕截图

let bounds = self.scene!.view?.bounds 
    UIGraphicsBeginImageContextWithOptions(bounds!.size, true, UIScreen.mainScreen().scale) 
    self.scene?.view!.drawViewHierarchyInRect(bounds!, afterScreenUpdates: true) 
    screenshot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

是否有可能获取整个场景?

谢谢。

+0

据我所知,你只能捕捉用户可见的视图。有人纠正我,如果我错了 –

回答

2

我看到你的代码,我根本没有看到任何问题;实际上我测试了它(它是一个函数),它完美地工作。

func getScreenshot(scene: SKScene) -> UIImage { 
    let bounds = self.scene!.view?.bounds 
    UIGraphicsBeginImageContextWithOptions(bounds!.size, true, UIScreen.mainScreen().scale) 
    self.scene?.view!.drawViewHierarchyInRect(bounds!, afterScreenUpdates: true) 
    let screenshot = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 

    return screenshot; 
} 

我已经测试过它自己,因为它是和工作;希望它有帮助:)

+0

也适用于我,但它必须在主线程中执行 – Guig