2015-12-30 274 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