由于我的示例项目被删除(我认为这将更容易测试),我将发布一些代码和图像来说明我的观点.
这是样本图像


我的地图册设置:

我的启动图像设置:

我将这些精灵添加到场景中的代码
override func didMoveToView(view: SKView) {
let texture = SKTextureAtlas(named: "scenery")
let test = SKSpriteNode(texture: texture.textureNamed("test"))
test.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
self.addChild(test)
}
Run Code Online (Sandbox Code Playgroud)
这些是我的结果:
iPhone 5模拟器:

iPhone 6 plus模拟器:

我已经尝试更改启动图像以使用资产目录.然后iPhone 6 plus似乎升级了2倍的屏幕.它仍在加载2x图像,但会将其放大.
我需要它来加载我的3x图像并使用我的2x图像进行缩放.
Gabuh在下面的回答指出了我正确的方向.适用于新项目.但是,如果我将他的解决方案用于我真正的SpriteKit项目,我的3x图像不会缩小.它们比它们应该大3倍.
我有一个关于通用游戏资产和in (iOS 8+)绝对定位的问题.SKNodesSprite Kit
我将通过以下示例尝试提出我的问题:
想象一下,一个2D自上而下的游戏用SKSpriteNode它代表的房子.一所房子有多个孩子SKSpriteNode,代表椅子,书桌,沙发等.
我有3个版本的房屋资产:
1x - 200 x 200px (非视网膜iPad),2x - 400 x 400px (Retina iPhone和iPad),3x - 600 x 600px (iPhone 6 Plus).重要:子节点(椅子,桌子等)位置在.plist文件中定义.像这样的东西(JSON表示):
children: [
{
position = {20,20};
},
...
]
Run Code Online (Sandbox Code Playgroud)
由于位置是以点而非像素定义的,因此根据设备屏幕比例,所有内容都会按预期定位.对于1x设备,位置保持不变{20,20},对于2x位置是{40,40},对于3x位置是{60,60}.
问题:
问题是,为了在所有设备上实现类似的外观和感觉200x200px,400x400px资产对于iPad设备来说是小的.
问题: …