如何自动缩放不同分辨率的场景?
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
我在 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