我的游戏中有很多角色,因此我有很多纹理。当加载纹理图集(包含大约5种不同的图像纹理)时,它会增加内存使用并将其保持在该数量。因此,越多的纹理就会持续驱动该数字,直到应用程序崩溃为止。我不需要同时使用所有角色,我可以在需要时加载一些角色纹理,并在不需要时释放其他角色,但是需要能够将其恢复原状。
答案 0 :(得分:5)
首先,您不需要在内存中手动加载纹理图集。 使用此代码创建精灵时
let sprite = SKSpriteNode(imageNamed: "Dog")
SpriteKit会查找名为Dog
的图像,如果找不到,则会自动在所有纹理图集中查找图像。
当在纹理图集中找到图像时,整个纹理图集会自动加载到内存中。
这就是为什么你可以避免手动加载纹理图集。
不要为从内存中删除纹理图集而烦恼
当您停止使用给定纹理图集内的所有图像时,它会自动从内存中删除。如果系统具有“足够的”内存但最终会发生这种情况,则不会立即发生这种情况。
这就是您不需要从内存中手动删除纹理图集的原因
您应该按照游戏逻辑将纹理分组为几个纹理图集。
如果你有30个纹理并且你知道只有1 ... 10 OR 11 ... 20 OR 21 ... 30将同时使用,那么创建3个纹理地图集如下:
这将使SpriteKit更有效。