我应该在cocos2d游戏中将小图像缩放到其他形状因子吗?

时间:2013-02-20 10:47:11

标签: cocos2d-iphone sprite ios-universal-app

我有一个使用cocos2d-iphone构建的通用 iOS游戏,其中包含图像(等等)。对于这些小图像,游戏在iphone:ipad / iphone-retina:ipad-retina的比例为1:2:4时工作正常。我有两种方法可以在游戏中启用它:

A)有三套精灵/精灵表 - 对于所需的三种形状因子,并适当地命名并拍摄图像

B)拥有一组最高分辨率的图像,然后根据设备及其分辨率进行缩放aSprite.scale=[self getScaleAccordingToDevice];

选项A的优点是运行时开销较小,代价是磁盘占用空间较大(一个重要的考虑因素,因为应用程序目前约为94 MB)。 选项B的优点是磁盘占用空间较小,但成本是即使对于iphone 3gs(支持最低的设备),ipad视网膜图像也会加载到内存中。

有人可以提供帮助我决定某种方式的论据吗?

由于

2 个答案:

答案 0 :(得分:3)

没有争论:使用选项A.

选项B绝对是不可能的,因为您将加载的图像可能是内存(作为纹理)的6-8倍大于具有iPad 3内存的四分之一的设备(3GS)或4(256 MB对1 GB)。更不用说渲染这种大图像的缩小版本所需的额外处理能力。由于内存不足和运行速度太慢(你试过吗?),它很有可能无法工作。

接下来,有理由认为在95 MB时你可能仍然没有使用选项B使你的应用程序低于50 MB。大的Retina纹理构成了你的束大小的三分之二或四分之三,SD纹理不会出现。重量很重。这是您应该考虑的唯一应用程序包大小目标,因为低于50 MB的用户可以通过无线方式下载您的应用程序,超过50 MB他们必须通过Wifi同步或连接到计算机。如果你不能低于50 MB,那么你的捆绑包大小是55 MB还是155 MB并不重要。

最后有更好的选择来减少捆绑包的大小。 Read my article,特别是第二部分。

如果您的图像是PNG,那么首先应该尝试将它们全部转换为.pvr.ccz和NPOT纹理图集(最简单的方法:TexturePacker)。您可以在不损失图像质量的情况下将捆绑尺寸减少30-50%。如果你可以承受失去一些图像质量,那么可以节省更多(加上额外的负载和性能改进)。

答案 1 :(得分:1)

嗯,在94Mb,您的应用已超出电话网络的下载限制,即只有在某些互联网连接可用时才会下载。那么......真的是一个问题吗?您需要考虑的另一个重要因素是运行时的内存占用。如果你在3G上运行4倍并缩小,内存要求仍将是全尺寸精灵(即16倍的内存量:)。所以你要问自己的另一个问题是,这款游戏是否可能在旧设备上以高内存占用率“运行”。此外,纹理的加载时间可能足以影响应用程序在旧设备上的可用性。你需要测量这些东西并根据一些硬数据(不幸的是)来决定。

您需要做的第一个测试是查看标准分辨率iphone上的“缩小”精灵是否正常。缩小有时在渲染时达不到预期。如果您的图形设计师将选项B调低,那么您就没有决定权。他/她有责任提供所有3种格式。之后,如果选项B仍然是一个选项,我将从选项B开始,并测量3GS(小规模项目,而不是完整的实施)。如果一切顺利,你就完成了。

ps:对于app尺寸,请考虑使用.pvr.ccz格式(我使用纹理打包器)。较小的纹理和更快的加载时间(因为pvr格式)。 3GS的加载时间改善可能较小,因为通常较慢的处理器 - 需要解压缩。

相关问题