2017-03-15 65 views
0

我從一個視圖控制器(它通過一個difficulty串吧)呈現遊戲控制器/遊戲場景編程就像這樣:Spritekit場景內容被放大

class GameController: UIViewController { 

    var difficulty: String! 

    override func loadView() { 

     self.view = SKView(frame: UIScreen.main.bounds) 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let skView = self.view as! SKView 

     let scene = GameScene(size: view.frame.size) 
     // Set the scale mode to scale to fit the window 
     scene.scaleMode = .aspectFill 
     scene.difficulty = difficulty 
     // Present the scene 
     skView.presentScene(scene) 

     skView.ignoresSiblingOrder = true 
    } 
} 

然而,當場景出現在屏幕上,所有的內容是「放大」(SKSpriteNode S,SKLabel S等)

有沒有人有關於如何解決這個想法?

非常感謝提前。

PS:通過SKS展示作品確定,在iPad上定位的問題只有SKLabel。這種方法的問題在於我無法找到如何通過SKS將我的自定義變量difficulty傳遞給場景,即使我在故事板中將其自定義類更改爲我的,也應該這樣做。

回答

1

你真的有2個問題在這裏。首先是我當前的設置有什麼問題,其次我可以使用sks文件並仍然傳遞數據。

回答第二個問題,是

if let gameScene = GameScene(fileNamed: "GameScene") { 

    self.gameScene = gameScene 
    self.gameScene.stage = 1 
    self.gameScene.setupBasedOnStage() 
    self.gameScene.scaleMode = .aspectFill 
    self.view?.presentScene(self.gameScene, transition: SKTransition.reveal(with: .down, duration: 1.0)) 
} 

您可以透露出的頁面(在這種情況下,它的舞臺)之前設置的任何自定義屬性,如果你需要,你可以調用設置功能根據舞臺加載信息/圖形。

我爲我的場景使用sks文件,並一直設置它們。

+0

嗨@Ron感謝您的回覆,但是當提出SKS時,我無法訪問我的SKScene類(它被設置爲我的SKS文件中的自定義類)中的'var difficulty:String!'。有什麼特別的設置? – Herakleis

+0

其中是變量設置?在課堂內但在功能之外?它是否設置爲私人?可能會發布一些,但場景類文件的問題。另外如果你將你的字符串設置爲var difficulty =「」,你就不必將其視爲可選項 –