我正在为不同的设备创建一个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)
问题是图像将在以下设备中重新缩放:
我想知道如何配置图像和SKScene尺寸以优化所有设备。
答案 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上,这会产生边框,但我可以忍受。