在游戏中将SKTextureAtlas拆分为多个级别的最佳方法是什么?

时间:2016-06-26 01:26:50

标签: ios sprite-kit sktextureatlas

目前我有一个太大而无法快速加载的SKTextureAtlas。它包含我游戏中所有敌人的纹理。我想拆分地图集,以便游戏只加载某个级别所需的纹理。但是,有些敌人会出现在多个级别。我应该如何拆分地图集?我宁愿不为每个级别创建一个地图集,因为我必须为重复的敌人复制图像文件,并且当有很多级别时它会变得很烦人。有更优雅的方法吗?

1 个答案:

答案 0 :(得分:0)

一个好的场景是当整个关卡在屏幕上的所有精灵都可以进入相同的纹理图集时。在这种情况下,纹理图集被加载到GPU中并保持在那里。 在每个帧期间,CPU只需要通知GPU有关每个sprite的坐标/位置/转换,从而节省了大量的数据传输。

据我所知,这可能会强制你复制一些精灵,因为其中一些可用于多个级别。只有你(作为你游戏的开发者)才能做到这一点。

来自Apple docs

  

创建纹理图集时,您希望在收集太多纹理或太少纹理之间取得平衡。如果您使用的图像太少,SpriteKit可能仍需要很多绘图过程才能渲染帧。如果包含太多图像,则可能需要立即将大量纹理数据加载到内存中。因为Xcode为您构建了地图集,所以您可以相对轻松地在不同的地图集配置之间切换。因此,请尝试使用纹理地图集的不同配置,并选择能够提供最佳性能的组合。