使用SKScene制作通用应用程序

时间:2015-09-16 20:49:26

标签: swift sprite-kit skscene

我已经阅读了很多东西,但我仍然遇到很多问题。

首先我选择了正确的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,从我读到的是构建通用应用程序的最佳尺寸。

1 个答案:

答案 0 :(得分:1)

我最近尝试将我的iPad应用程序转换为通用版,我可以对此有所了解。

您需要考虑几种尺寸。首先,view大小。这是您订购SKScene的SKView实例。通常,此视图的大小等于[UIScreen mainScreen].size

的大小
  • iPad | 1024 * 768
  • iPad Pro | 1366 * 1024
  • iPhone 4“| 320 * 576
  • iPhone 4.7“| 375 * 667
  • iPhone 5.5“| 414 * 736

您的SKScene也有size属性,表示其视口的大小。这是SpriteKit渲染场景的 points 中的大小(或分辨率,如果你愿意)。

最后要讨论的是scaleMode,这就是SKView如何在其内部构建渲染场景。您可以将其视为UIImageView本身构建UIImage,只有SKScene的选项更少。 因此,如果您有576 * 320的视图和尺寸为1024 * 768的SKScene,则结果是水平拉伸的图像。

请注意,使用-presentScene:将SKScene添加到SKView时,传递的场景大小会调整为视图的大小。

TL; DR

根据您的游戏情况,您可以拥有2个.sks文件(一个用于iPhone,一个用于iPad)。将每个文件(SKScene节点)中根对象的大小设置为您要定位的设备的大小。无论如何,这就是我最终可能会做的事情。