Swift:如何处理内存中的大量纹理

2023-12-22

我的游戏中有很多角色,因此我有很多纹理。当加载纹理图集(包含大约 5 个不同的图像纹理)时,它会增加内存使用量并保持该数量。因此,更多的纹理只会不断推动该数字不断上升,直到有时应用程序崩溃。我不需要一次需要所有角色,我怎样才能在需要时加载一些角色纹理,并在不需要时释放其他角色纹理,但我需要能够将其恢复。


Rule 1

首先,您不需要手动将纹理图集加载到内存中。 当您使用此代码创建精灵时

let sprite = SKSpriteNode(imageNamed: "Dog")

SpriteKit 寻找名为的图像Dog如果找不到它,它会自动在所有纹理图集中查找图像。

当在纹理图集中找到图像时,整个纹理图集会自动加载到内存中。

这就是为什么您可以避免手动加载纹理图集。

Rule 2

不必费心从内存中删除纹理图集

当您停止使用给定纹理图集中的所有图像时,它会自动从内存中删除。如果系统有“足够”的内存,这不会立即发生,但最终会发生。

这就是为什么您不需要手动从内存中删除纹理图集

你能做什么?

您应该按照游戏的逻辑将纹理分组为多个纹理图集。

如果您有 30 个纹理,并且知道只会同时使用 1...10 或 11...20 或 21...30,则创建 3 个纹理图集,如下所示:

  • TextureAtlas1:图像从 1 到 10
  • TextureAtlas2:图像从 11 到 20
  • TextureAtlas3:图像从 21 到 30

这将使 SpriteKit 工作更加有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift:如何处理内存中的大量纹理 的相关文章

随机推荐