我应该何时加载和处置资源

时间:2016-04-06 18:07:42

标签: android libgdx resources assets

我已经阅读了很多关于这个问题的内容,但我想就如何在我的情况下处理它提出一些建议。

我有一个大约8个不同屏幕的用户界面,我不打算在屏幕之间交换时加载/处理资源,因为这会导致非常糟糕的用户体验。

然而,我还有12个迷你游戏,你可以从我的UI开始,这让我想到了我的问题;我应该何时加载和处置资产?

在我看来,我有两个选择:

  • 选项A:我在游戏开始时加载每一个资产,但这似乎是一个糟糕的解决方案。
  • 选项B:我在游戏启动时仅加载UI资源,然后在每个迷你游戏启动时加载资产,并在完成后将其处理掉。

如果我使用选项B,我应该在迷你游戏开始之前处置所有UI资产吗?这意味着我必须在迷你游戏结束后重新加载它们(每个迷你游戏都是50秒长)。这似乎不是用户友好的,但如果我在开始迷你游戏时没有处理UI资产(用户在迷你游戏结束后被重定向到UI),它会不会导致内存泄漏?

1 个答案:

答案 0 :(得分:0)

真正的问题是你拥有多少资产以及它们有多大(它们具有什么样的分辨率)。

最好的想法似乎是将图形的所有内容保存在一个很棒的TextureAtlas中 - 但是你必须记住,创建大于2048x2048px的图集并不是一个好主意 - 并在开头加载这个图集(在启动后制作一些加载屏幕,然后在应用程序寿命结束时卸载。

当然你应该使用我认为你已经做过的AssetManager实例。

我认为同样的情况是所有资产都在两个,三个地图上。音乐我会这样对待 - 遗憾的是没有音乐地图集:)

如果资产数量真的很大而且一开始就无法加载它们,我担心最好的想法是在迷你游戏开始之前直接加载它们并在它结束后直接处理 - 这似乎是最有效的管理你的记忆的方法。当我开始和完成迷你游戏时,用户也会准备好看一些加载屏幕。

您还可以尝试实施一些加载资产的lazy技术,但这实际上取决于您拥有的资产数量以及应用程序的特征