开发人员似乎总是为不同的设备创建不同的图像资源,并根据设备加载它们.但是,为最大分辨率设备(iPad)创建图像然后为iPhone 6,5等缩小图像是否有任何缺点?
我使用SpriteKit,所以我只创建不同大小的SKSpriteNodes并对它们应用相同的纹理并将其缩放以适合节点.
我知道可以考虑性能(为旧设备加载大图像).但除此之外,还有什么吗?这些图像会出现像素化/模糊吗?
解决方法
完美/纯粹的答案是为每个设备分辨率使用单独的图像和代码.
然而,从您自己的时间和理智的角度来看,使用有限的设置是有意义的,因为分辨率和屏幕尺寸的数量不会很快减少.那么为什么要浪费时间准备多个图像,除非xcode这样做更简单.
对于方形或固定宽高比的图像,我认为您只需要一个图像.对于像背景这样的图像存在问题,无论分辨率如何,至少需要满足不同方面的分辨率:所以单独的宽高比图像是必不可少的(如3:2和16:9),除非你不介意挤压,拉伸或裁剪图像.
如果您发现测试中的性能受损,您可以随后添加较低分辨率的图像.
在像素化方面,这是你无法避免的.如果您考虑从x3到x1分辨率时发生的情况,则必须将3×3像素混合到1×1中.在高分辨率下,任何单个像素宽(如线)或在几个像素上具有快速颜色变化的东西将受到最大影响.你可以在网上看到很多这方面的文章.
避免像素化的唯一方法是使用矢量图像,但这需要特殊的软件来加载矢量图像并将它们渲染成UIImages.
缩小时,每张图片都会受到不同的影响.一个想法可能是为x2图像,你缩小1为iPhone 3和向上1到x3为iPhone 6.这将以原始分辨率覆盖大多数当前设备,并且可能提供不太明显的像素化.