Spritekit场景内容已放大

时间:2017-03-15 15:26:33

标签: ios sprite-kit skspritenode skscene skview

我以编程方式从视图控制器(将difficulty字符串传递给它)呈现游戏控制器/游戏场景,如下所示:

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 个答案:

答案 0 :(得分: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文件并一直设置它们。