ios - SpriteKit 正确的 Assets 大小

标签 ios swift sprite-kit xcasset

总结

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

我现在拥有的

我正在 viewDidLoad 中创建 SKScene:

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

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

使用此配置,我的 View 初始化为 600 点的宽度(默认 Storyboard大小),然后重新调整为设备宽度。在布局 View 后使用 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 大小以针对所有设备对其进行优化。

最佳答案

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

- (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];
    } 
}

关于ios - SpriteKit 正确的 Assets 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27939159/

相关文章:

ios - iOS Per-App VPN 是否需要 MDM

ios - '?' 后面必须跟一个调用、成员查找或下标

ios - UITableView 中的 self.delegate=self,有什么问题吗?

swift - 当 UIView 的动态标签足够小时,在 ScrollView 中垂直居中,但一旦它们不够小,就将其对齐到顶部

ios - 如果我稍后使用 SKTextureAtlas,Sprite Kit 是否会多次加载纹理图集?

ios - iPhone 6 自动布局问题

swift - 在 Swift 3 中获取 SKSpriteNode 的文件名

ios - UIGestureRecognizerState.Cancelled 与 UIGestureRecognizerState.Failed

swift - 根据名称定位多个 Sprite ?

ios - 仅在带 Retina 的 iPad Air 和 iPad mini 上运行 Action /加载 Assets 时 Sprite Kit 崩溃