【发布时间】:2012-12-28 03:03:54
【问题描述】:
我为这个冗长的问题预先道歉,有多个子问题,但问题确实如标题中所述。接下来是对问题不同方面的详细分解。
在我使用 cocos2d 构建的通用 ios 游戏中,我有四类图像 - 我想确定哪些应该进入 spritesheets,哪些最好作为单独的图像加载。我目前的猜测是,只有在整个游戏中运行的角色动画才能提供作为 spritesheets 加载到内存中的值:
- 在整个游戏过程中运行的角色动画(除了 当用户在菜单中时):对于这些,我假设有图像 在 spritesheet 中将减少运行时内存使用(由于 将单个文件填充到两个字节边界的幂),因此 他们是 spritesheet 的候选者。那是对的吗?
- 小图(约200张),其中0到4张任意显示 时间,随机选择,在游戏过程中。对于这些,我不确定 是否值得将所有 200 张图像加载到内存中 一次使用大多数任何 4 个。所以最好直接 将它们作为图像访问。那是对的吗?
- 一些(大约 20 个)小的菜单元素,例如仅在静态菜单中使用的按钮:由于菜单项仅在菜单显示期间使用,我认为它们在通过精灵表改善内存访问方面没有太大价值。那是对的吗?
- 几张大图用作菜单、游戏场景等的背景。这些图片大多与屏幕分辨率一样大。由于屏幕分辨率大致等于单个图像的最大尺寸(例如,对于 ipad Retina,图像尺寸为 4096 x 4096 与屏幕尺寸为 2048 x 1536),使用 spritesheets 最多没有太多增益 1或 2 个大图像将适合一个精灵表。此外,由于这些大文件中的每一个都只在一个场景中使用,因此将所有这些大图像作为 spritesheets 预先加载到内存中似乎是一种不必要的开销。因此,直接将它们作为 spritesheets 访问。对吗?
几个常见的相关问题:
a) 将跨不同场景使用的图像打包到同一个 spritesheet 中,即使在该场景中仅使用图像的一个子集时,我们也可以将它们加载到内存中。我认为这是一个坏主意。对吗?
b) 只能在较旧的设备(iPad 1 和 iPhone 3gs)上玩游戏时出现口吃。 spritesheets 会帮助减少这种卡顿吗?
c) 我假设 spritesheets 只会有利于运行时内存占用,而不是应用存档的磁盘大小。例如,我注意到一组大小为 11.8 MB 的文件在放入 spritesheet 时为 11 Mb - 压缩优势不大。这是一个有效的假设吗?
请让我知道您对上述理由的看法。
谢谢
阿南德
【问题讨论】:
标签: ios cocos2d-iphone sprite-sheet