Java libgdx:加载资产,内存使用情况

问题描述 投票:2回答:1

我们正在构建java war 2 pc游戏。 (2d,转弯,地图由六边形组成)

我们有记忆问题。

我们的资源约为850mb(图像750,数千个小图像)。这是开发阶段,因此当我们删除一些未使用的数据,压缩等时它会更少。

但是,当我们加载所有这些资源时,我们将花费4GB的RAM。

我们正在使用assetmanger并加载其中的所有内容。

但是,主要问题是地形,因为每种情况都使用几乎所有的地形(海/湖等除外)

TextureAtlases不用于地形。

我想这是一个问题:“被迫拥有一个功率为2(POT)的纹理”。我将尝试使用TextureAtlas解决这个问题。

我们最近在游戏中添加了指挥官。并且看起来他们的肖像(80mb)在加载时消耗700mb的RAM(使用assetManeger [assetManeger.load(“path_name”,Texture.class);]

哪些是这些情况下的最佳实践,何时加载一直使用的东西......

任何建议都会有所帮助。提前致谢。

java libgdx
1个回答
0
投票

使用AssetManager而不是直接构造Textures对加载时占用的内存量没有影响。

如果使用PNG或JPG,纹理占用的内存比源图像多得多,因为它们在内存中加载时未压缩。您可以将图像预压缩为ETC1,并且在加载时它们将保持压缩状态(并提高性能),但存在缺点,例如缺少alpha透明度。 Read here.

TextureAtlases将通过减少纹理的总数和这些纹理中的浪费空间来节省一些内存。如果合理使用,它们也可以在性能上有很大的改进。如果您按照经常在地图集的不同纹理页面之间跳转的顺序绘制精灵,则不会有太大的改进。由于您担心总内存使用量,因此您需要对它们进行组织,以便您可以继续卸载舞台未使用的内容。整个Atlas要么加载要么不加载,因此您需要将不同阶段的资产放入单独的地图集中。

© www.soinside.com 2019 - 2024. All rights reserved.