gpt4 book ai didi

swift : How to handle a lot of textures in memory

转载 作者:搜寻专家 更新时间:2023-10-31 22:13:35 25 4
gpt4 key购买 nike

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

最佳答案

规则 1

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

let sprite = SKSpriteNode(imageNamed: "Dog")

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

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

This is why you can avoid manually loading the texture atlas.

规则 2

不要为从内存中删除纹理图集而烦恼

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

This is why you don't need to manually remove a texture atlas from memory

你能做什么?

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

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

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

这将使 SpriteKit 的工作更加有效。

关于 swift : How to handle a lot of textures in memory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37825039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com