由于帖子太大,我提前道歉,但是每个尝试过制作某种通用应用程序的人都知道这是一个相当有问题的东西,所以请对我宽容一些......
The goal
我想要实现的目标(如上图所示)是在 iPhone 5 和 6 上使用 @2x 资源,并保持应用程序的相同外观。如果可能的话,无需根据检测到的设备手动计算节点的比例和位置属性即可完成所有这一切...简而言之,如何实现该应用程序自动约束元素(和场景)的比例和元素之间的比例?另外,我希望使用 @3x 资源在 iPhone 6+ 上拥有与应用程序相同的外观,但为了简单起见,我只专注于 iPhone 5 和 6。
我在网上发现有些人说这个(下采样)是由 iOS 自动完成的,例如他们建议这样做:
“以 iPhone 6 的大小制作 @2x 资源,然后 iOS 就可以了
针对 iPhone 5" 自动缩小尺寸。
但当涉及到 Spritekit 场景时,这显然不是真的,或者我错过了一些东西。
问题
尽管 iPhone 6 和 iPhone 5 具有相同的宽高比和相同的 PPI,但与场景大小相比,使用相同的资源看起来并不相同(与场景大小相比,查看第一张和第二张图像上的菜单精灵),因为 PPI 与像素密度,iPhone 6 有更多的空间(更大的对角线,更多的英寸),这意味着它比 iPhone 5 有更多的像素。这就是我的问题所在,我不知道什么是有效的处理方法。
到目前为止我做了什么
第二张图片对于 GUI 来说不是问题,但对于游戏玩法来说是问题,就我而言是这样,因为我希望在不同的设备上具有相同的外观和感觉。只需看第一张和第三张图片即可。
谢谢斯凯勒·劳伦的建议我已经设法在 7.1 或 8.1 系统以及 iPhone 6 上的所有 iPhone 5 设备上拥有相同的应用程序外观。所以现在的问题是如何使用 @3x 调整此代码以与 iPhone 6+ 一起使用纹理,以及 iPhone 4s 上的情况。以下是 iPhone 5 和 6 的解决方案:
查看控制器.m
GameScene *scene = [GameScene sceneWithSize:CGSizeMake(375,677)];//fixed instead of view.bounds.size
scene.scaleMode = SKSceneScaleModeAspectFill;
因此,在 iPhone 6 尺寸下,场景始终具有固定大小,并且视图大小会根据设备而变化。我使用资产目录作为启动图像而不是 xib 文件。图像尺寸为建议尺寸 - 4s 为 640x960px,5 为 640x1136px,6 为 750x1334px,6+ 模型为 1242x2208。资源的大小适用于 iPhone 6,因此对于该型号,根本没有缩放。
与4s模型相关,当我使用上述方法时,每侧都有两个黑条......
到目前为止,我仅在模拟器和 iPhone 6 设备上对此进行了测试(我在设备或模拟器上看到的内容看起来像第一张图片)。
Question
现在,正如我所说,一切都可以在 iPhone 4s(由于宽高比不同而有两个黑条)、5、6 上使用 @2x 资源,但是如何让一切都可以在使用 @3x 资源的 iPhone 6+ 上工作?
如果我对场景使用 375x667 尺寸,则所有内容都位置正确且比例良好,但质量会受到影响(因为放大 @2x)