0

概括

我正在为不同的设备创建一个 SpriteKit 游戏,我想知道不同资产的大小应该是多少。

我现在拥有的

我正在创建SKScenein viewDidLoad

scene = GameScene(size: view.bounds.size)
scene.scaleMode = .AspectFill

我不想使用viewWillLayoutSubviews它,因为它在启动时被调用两次,而且每次设备旋转时也被调用。我不认为在这里初始化场景是一个好主意。

使用此配置,我的视图被初始化为 600 点的宽度(默认故事板大小),然后重新调整为设备宽度。在视图布局后使用println(scene.size.width)它在 iPhone 6 中显示 375 磅大小,在 iPhone 6 Plus 中显示 414 磅。

我正在使用 xcassets 来提供背景图像,我想知道我应该使用哪种尺寸。我当前的配置已准备好用于 320 点分辨率(iPhone 4、iPhone 5)

  • 1x : 320 像素
  • 2x : 640 像素
  • 3x : 960 像素

问题

问题是图像将在以下设备中重新缩放:

  • iPhone 6:750 像素 - 375 点
  • iPhone 6 Plus:1242 像素 - 414 点
  • iPad:768 像素 - 768 点
  • iPad 视网膜:1536 像素 - 768 点

我想知道我应该如何配置图像和 SKScene 大小以针对所有设备进行优化。

4

2 回答 2

1

如果你不想初始化场景两次,你可以只初始化一次:

- (void)viewWillLayoutSubviews
{

    [super viewWillLayoutSubviews];


    // Configure the view.
    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;
    skView.showsDrawCount = YES;
    skView.showsPhysics = YES;
    skView.ignoresSiblingOrder = YES;

    if(!skView.scene){
    // Create and configure the scene.
        GameScene * scene = [GameScene sceneWithSize:skView.bounds.size];

        scene.scaleMode = SKSceneScaleModeAspectFill;

    // Present the scene.
        [skView presentScene:scene];
    } 
}
于 2015-01-14T10:14:04.967 回答
0

对于我目前正在进行的一个项目,我决定以尽可能大的分辨率制作我的资产,即 iPhone 6 Plus 之一(2208 x 1242,iOS 分辨率参考)。由于 iPhone 6 和 iPhone 5 使用 16:9 的纵横比,因此使用

scene.scaleMode = .AspectFit

在 iPad 和 iPhone 4s 上,这会产生边框,但我可以忍受。

于 2015-01-14T09:15:55.647 回答