我很难理解不同设备上的分辨率如何工作。所以我所做的是制作1024 x 768的背景图像,然后在iphone 5设备上进行测试。当我运行时,屏幕的下半部分被切掉,以便顶部。我确实使用了AspectFill作为我的缩放模式,但即使我在iphone 6或6+上测试它,背景仍然会被切断。
以下是我的gameviewcontroller代码
import UIKit
import SpriteKit
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let scene = GameScene(size: CGSize(width: 1024, height: 768))
let skView = self.view as! SKView
skView.multipleTouchEnabled = true
if GameSettings.Debugging.ALL_TellMeStatus {
skView.showsFPS = GameSettings.Debugging.ALL_ShowFrameRate
skView.showsNodeCount = GameSettings.Debugging.ALL_ShowNodeCount
skView.showsDrawCount = GameSettings.Debugging.IOS_ShowDrawCount
skView.showsQuadCount = GameSettings.Debugging.IOS_ShowQuadCount
skView.showsPhysics = GameSettings.Debugging.IOS_ShowPhysics
skView.showsFields = GameSettings.Debugging.IOS_ShowFields
}
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
_ = SGResolution(screenSize: view.bounds.size, canvasSize: scene.size)
skView.presentScene(scene)
}
override func shouldAutorotate() -> Bool {
return true
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return .Landscape
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Release any cached data, images, etc that aren't in use.
}
override func prefersStatusBarHidden() -> Bool {
return true
}
}
和我在中添加背景图片的代码。
let background = SKSpriteNode(imageNamed: "Artboard 1")
background.posByCanvas(0.5, y: 0.5)
background.xScale = 1.2
background.yScale = 1.2
background.size = self.frame.size
background.zPosition = -1
addChild(background)
这是启动屏幕尺寸的正确方法,还是应该从iPad屏幕尺寸开始然后除垢?如果有人能引导我如何攻击这个问题那就太棒了!!
答案 0 :(得分:0)
Aspect填充会切断你背景的部分内容。
您的场景的宽高比为4:3
您的设备的宽高比为16:9
AspectFill
将以当前宽高比(4:3)缩放场景,直到填充最远的边框,允许整个视图显示场景并且没有黑色边框;
AspectFit
将缩放,直到最近的边框被填充,这将为您提供黑条以保持纵横比。
如果你想要保留4:3,那么你使用.Fill
,这当然会让你的精灵在16:9变得更胖,因为它会拉伸场景,直到它击中所有4边界
最后你有.ResizeFill
,它的作用是调整场景边界的大小以匹配你的屏幕大小,所以如果你从一个1024x768场景开始,当你在iPhone上观看时,它会把它变成736x414场景6+(这是因为我们的工作点不是像素,像素数将是x3(所以2208x1242),硬件将缩小到1920x1080)。
您需要退后一步,评估您希望游戏在3种不同宽高比上的显示效果
16:9,3:2和4:3,并确定上述4种方法中哪一种最适合您。
现在在我看来,我发现Aspect Fill效果最好,我只是计划16:9的宽高比,确保我没有在可能为游戏裁剪的区域中放置任何重要信息,但是这个对每个人都不起作用,不幸的是没有人可以帮助你完成这个部分,因为这是你的游戏,你决定了它的外观和感觉。