我已经阅读了很多东西,但我仍然遇到很多问题。
首先我选择了正确的Scalemode,在我的下面是AspectFit。这篇帖子我读到了:
Difference between UIViewContentModeScaleAspectFit and UIViewContentModeScaleToFill?
但即便如此,另一篇文章告诉我们使用ResizeFill:
Dealing with different iOS device resolutions in SpriteKit
问题在于Ipad上的SKScene只能获得1/10的屏幕,看起来我需要制作2个单独的SKScene,一个用于Ipads,另一个用于Iphone。
但是对于Ipad,我在屏幕的顶部和底部都有2条黑线。然后我看到这篇文章:
viewWillLayoutSubviews in Swift
我用来更改视图的是这段代码:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let scene = Level(fileNamed: "Level")
scene!.scaleMode = .AspectFit
let transition = SKTransition.fadeWithDuration(0.5)
self.view?.presentScene(scene!, transition: transition)
}
将SKScene用于通用应用程序时,有哪些正确的做法?我已经使用Atlas来获取@ x1,@ x2和@ 3图像。我的SKScene尺寸是480x320,从我读到的是构建通用应用程序的最佳尺寸。
答案 0 :(得分:1)
我最近尝试将我的iPad应用程序转换为通用版,我可以对此有所了解。
您需要考虑几种尺寸。首先,view
大小。这是您订购SKScene的SKView实例。通常,此视图的大小等于[UIScreen mainScreen].size
:
您的SKScene
也有size属性,表示其视口的大小。这是SpriteKit渲染场景的 points 中的大小(或分辨率,如果你愿意)。
最后要讨论的是scaleMode,这就是SKView如何在其内部构建渲染场景。您可以将其视为UIImageView本身构建UIImage,只有SKScene的选项更少。 因此,如果您有576 * 320的视图和尺寸为1024 * 768的SKScene,则结果是水平拉伸的图像。
请注意,使用-presentScene:
将SKScene添加到SKView时,传递的场景大小会调整为视图的大小。
根据您的游戏情况,您可以拥有2个.sks文件(一个用于iPhone,一个用于iPad)。将每个文件(SKScene节点)中根对象的大小设置为您要定位的设备的大小。无论如何,这就是我最终可能会做的事情。