如何自动缩放不同分辨率的场景?

How to auto-scale a scene in different resolution?

我在 Scenekit 场景上叠加了 Spritekit 背景和标签。 当我尝试 运行 iPhone 5 和 iPhone 6 模拟器上的程序时,SpriteKit 节点不会自动适应不同的设备。 如何解决这个问题?

class GameOverlay: SKScene {

    override init(size: CGSize) {
        super.init(size: size)

        //Start Game
        let gameStart = SKSpriteNode(imageNamed: "GameStart")
        gameStart.anchorPoint = CGPoint(x:0.5,y:0.5)
        gameStart.position = CGPointMake(-size.width / 2 + 400 , size.height / 2 - 200)
        gameStart.size = CGSize(width: 356 / 2, height: 86 / 2)
        gameStart.setScale(1.0)
        gameStart.zPosition = 1
        SKSceneScaleMode.ResizeFill
        self.addChild(gameStart)


        //Quit node
        let quit = SKLabelNode(fontNamed: "AvenirNext-Bold")
        self.anchorPoint = CGPointMake(0.5, 0.5)
        self.scaleMode = .AspectFill
        quit.text =  "Quit"
        quit.fontColor = UIColor(red: 255.0/255.0, green: 255.0/255.0, blue: 255.0/255.0, alpha: 1.0)
        quit.position = CGPointMake(-size.width / 2 + 580 , size.height / 2 - 360)
        quit.name = "quit"
        self.addChild(quit)

        //BG
        let bg = SKSpriteNode(imageNamed: "22")
        bg.anchorPoint = CGPoint(x:0.5,y:0.5)
        bg.position = CGPoint(x:0.0, y:0.0)
        bg.zPosition = -1
        SKSceneScaleMode.ResizeFill
        self.addChild(bg)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

}

第 1 步

写作

SKSceneScaleMode.ResizeFill

没有效果。

要调整场景大小,您必须编写

self.scaleMode = .ResizeFill

第 2 步

这个代码

self.scaleMode = .ResizeFill

不会缩放场景,它只是调整大小。

要缩放场景(并自动缩放其内容),您可以编写

self.scaleMode = .Fill