【发布时间】:2015-01-14 09:07:09
【问题描述】:
总结
我正在为不同的设备创建一个 SpriteKit 游戏,我想知道不同资产的大小应该是多少。
我现在拥有的
我正在viewDidLoad 中创建SKScene:
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 大小以针对所有设备进行优化。
【问题讨论】:
-
viewwilllayout 是推荐的方式,在呈现场景之前只需检查 self.view == nil
-
同时检查场景 scaleMode
-
我已经尝试过了,它在第一次调用时将其初始化为 600 像素宽度,然后初始化为正确的 750 (iPhone 6) 宽度。如果我检查场景是否为零,它将被初始化为 600 像素宽度,与 viewDidLoad 中相同。
-
我可以在
viewDidLayoutSubviews的第一次调用中正确地做到这一点(注意Did 而不是Will)你认为这很好吗想法?
标签: ios swift sprite-kit xcasset