1

我正在使用andengine为Android平台开发游戏。我曾经定期检查应用程序的内存使用情况。

这是使用精灵表之前的内存使用情况 在此处输入图像描述

后来我知道了 SpriteSheet 和 Andengine 的 TexturePackerExtension

我试图在我的应用程序中使用它。我创建了一个精灵表,其中包含整个游戏所需的所有图像。

当我加载它时,我的堆比前一个增加了。

在此处输入图像描述

我假设使用 SpriteSheet 后堆会减少。
什么地方出了错?
我应该怎么做才能使用 SPriteSheet 和 TexturePackers 来管理内存。

使用的软件:

  1. CodeANdWeb.com的 TexturePacker
  2. AndEngine GLES2
  3. 和engine-TexturePacker 扩展。

[编辑] [已解决]

总堆似乎不是一个更大的问题。我终于设法控制了总堆内存。

我简单地为实际游戏资源创建了 2 个 spritesheets,1 个用于菜单资源。我只加载当前需要的精灵表。在加载另一个 spritesheet 之前,我曾经卸载以前的 spritesheet 等等..

我希望这是一个正确的方法。

创建 2 个 spritesheets 后,我的堆内存永远不会超过 18 mb:D

在此处输入图像描述

4

1 回答 1

1

您的总堆容量(可能)暂时较大,因为 spritesheet 是一大块数据,在发送到 OpenGL 纹理之前必须在很短的时间内将其解码到堆内存中。您分配的堆几乎相同!所以这里没有泄漏或任何东西!

OpenGL 纹理不计入您的 Java 堆。

于 2013-04-01T16:15:39.180 回答