SpriteKit正确的资产规模

时间:2015-01-14 09:07:09

标签: ios swift sprite-kit xcasset

摘要

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

我现在拥有什么

我正在SKScene中创建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尺寸以优化所有设备。

2 个答案:

答案 0 :(得分: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];
    } 
}

答案 1 :(得分:0)

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

隐式缩小资产是没有问题的。
scene.scaleMode = .AspectFit

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