【发布时间】:2015-05-25 18:31:26
【问题描述】:
由于帖子太大,我提前道歉,但是每个尝试制作某种通用应用程序的人都知道这是非常有问题的东西,所以请对我放轻松...
目标
我想要实现的(如上图所示)是在 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 来说不是问题,但对于游戏来说,就我而言是这样,因为我希望在不同设备上具有相同的外观和感觉。 只看第一张和第三张图片。
感谢Skyler Lauren's 的建议,我已经设法在 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 为 640x960 像素,5 为 640x1136 像素,6 为 750x1334 像素,6+ 模型为 1242x2208。资产的大小适合 iPhone 6,因此对于该型号,根本没有缩放。
关于4s机型,我在使用上述这种方法时,两边各有两条黑条...
到目前为止,我只在模拟器和 iPhone 6 设备上对此进行了测试(我在设备或模拟器上的第一张图片上看到的效果)。
问题
现在,正如我所说的,一切都可以在 iPhone 4s 上运行(由于宽高比不同,有两个黑条),5、6 使用 @2x 资产,但是如何使用@3x 资产让 iPhone 6+ 一切正常? 如果我为场景使用 375x667 尺寸,那么一切都定位正确并且比例很好,但质量会受到影响(因为升级@2x)
【问题讨论】:
-
第一次添加节点时,您是否尝试过基于设备扩展节点?任何后续动画(纹理更改)都将带有预设比例因子。
-
当然,这就是我尽可能避免的,但这当然是处理这个问题的一种选择。我只是想找到更简单/自动的解决方案,这将节省我许多计算/基于设备等手动设置比例属性。
-
你是在缩放你的场景,还是你的场景和视图的大小相等(即没有缩放)。
-
@EpicByte 从我测试的结果来看,相同大小的场景和视图不会像第三张图片那样产生预期的效果。所以答案是否定的,如果我理解你的话,一开始我没有缩放任何东西。使用 view.bounds.size 初始化场景。但后来,我尝试在视图控制器中初始化场景时使用 CGSizeMake(375,667) 之类的东西,这给了我部分好的结果。我将在今晚晚些时候用该信息更新我的问题...
标签: ios sprite-kit size sprite universal