据我了解纹理区域,它们只是给定图集(包含记忆图像)上的某种参考。增加纹理区域的大小无助于减少内存消耗,相反,您只会增加从图集中看到的剪切/剪辑
例如,让您的图像看起来像这样(带有纹理区域 A、B、C、D):
AB
光盘
将纹理区域的宽度和高度加倍会导致一个包含 ABC 和 D 纹理的大纹理区域(这可能不是您想要的)
如果您的平台仅包含一个纹理区域 A,您可以将其作为单个 png 加载到新图集并添加TextureOptions.REPEATING_NEARIST_PREMULTIPLYALPHA
到构造函数中。然后你可以将纹理区域的宽度和高度设置为你的精灵所需的宽度和高度,图集将重复它 - 如果你使用它将被绘制为 AAAAA
textureRegionHeight = imageHeight;
textureRegionWidth = 5* imageWidth;
spriteWidth = textureRegionHeight;
spriteHeight = textureRegionHeight;
附加信息
为了提高性能,您应该使用:
- 精灵池(更多:一般的对象池)(你永远不能显示超过 100 个 32x32 的精灵,因为它们中的一些很快就会离开屏幕)
- SpriteBatch 用于不可更改/静态的相同 Sprite,SpriteGroup 用于其他(只要您知道可能有超过 5 到 10 个具有相同纹理的精灵,我从未测量过这些组是否比 REPEATING_NEAREST 选项更好或更差)
- 每个精灵对象的 Sprite.setCullingEnabled(true),因为它将停止绘制不可见/在屏幕之外的精灵(如果剔除与 REPEATING_NEAREST 配合得很好,我都没有测量)
这些点应该可以提高性能
更多信息可以在http://www.matim-dev.com/tips-and-tricks---how-to-improve-performance.html或在 AndEngine 论坛http://www.andengine.org /forums/search.php