似乎开发人员总是为不同的设备创建不同的图像资源,并根据设备加载它们。但是,只为最高分辨率的设备 (iPad) 创建图像,然后为 iPhone 6、5 等缩小该图像,有什么缺点吗?
我使用 SpriteKit,因此我只需创建不同大小的 SKSpriteNode,并对它们应用相同的纹理,然后缩放它以适合节点。
我知道性能是需要考虑的因素(为旧设备加载大图像)。但除此之外,还有别的吗?这些图像会显得更加像素化/模糊吗?
完美/纯粹的答案是为每个设备分辨率使用单独的图像和代码。
然而,从您自己的时间和理智的角度来看,考虑到分辨率和屏幕尺寸的数量不会很快减少,使用有限的集合是有意义的。那么为什么要浪费时间准备多个图像呢,除非像 xcode 这样的工具可以让这件事变得更简单。
对于方形或固定纵横比的图像,我认为您只需要一张图像。像背景这样的图像存在一个问题,无论分辨率如何,您都需要至少满足不同的宽高比:因此单独的宽高比图像是必不可少的(例如 3:2 和 16:9),除非您不介意挤压、拉伸或裁剪图像。
如果您发现测试中性能受到影响,您可以稍后添加较低分辨率的图像。
就像素化而言,这是无法避免的。如果您考虑一下从 x3 分辨率变为 x1 分辨率时会发生什么,您就必须将 3x3 像素混合为 1x1。在高分辨率下,任何单像素宽(如线条)或在几个像素上颜色快速变化的物体都会受到最严重的影响。网上有很多关于这方面的文章,你可以看看。
避免像素化的唯一方法是使用矢量图像,但这需要特殊的软件来加载矢量图像并将其渲染到 UIImage 中。
当你缩小时,每张图像都会受到不同的影响。一个想法可能是选择 x2 图像,对于 iPhone 3,将其缩小 1;对于 iPhone 6+,将其放大 1 至 x3。这将覆盖当前大多数原始分辨率的设备,并且可能会提供不太明显的像素化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)