纹理加载:一次一切还是解压/加载所需的资产?

时间:2015-02-16 18:50:38

标签: java android opengl-es opengl-es-2.0 andengine

我们在AndEngine的基础上开发了一款非常棒的Android游戏。所以我们有很多要加载的资产,尤其是纹理。

当应用程序启动时(显示进度条)时,每个屏幕(菜单,商店等)的所有内容(声音,纹理等)都会加载。这样,用户只需在游戏开始时等待约16秒。从用户的角度来看,我们认为这是一个非常令人愉快的解决方案,但在电池使用/内存使用或任何其他原因方面可能不好吗?

在我们卸载活动屏幕的所有屏幕特定资产并加载下一个屏幕所需的资产的解决方案中,有什么理由可以说明什么?

2 个答案:

答案 0 :(得分:2)

在我看来,最好的方法是“延迟加载”,即仅在需要时加载资源。这样你就不会让用户等待他不会使用的资源。所以我所做的是,当应用程序启动时,我在打开的启动画面中加载菜单的资源,当用户进入播放场景时(例如),我卸载菜单资源(因此清除内存),然后加载在另一个不同的加载闪屏期间,游戏序列的相关资源。这样,用户总共会等待最短时间,内存只会加载所需的资源。

此外,从用户的角度来看,我认为等待整个应用程序加载会很烦人,当你想要的只是向你的朋友展示你得到的分数时。

答案 1 :(得分:1)

我已经完成了一个使用大量纹理的应用程序(HD和LOW都取决于设备等),我使用“延迟加载”方法。这个应用程序是为孩子们准备的,所以有很多动画和插图。我的第一个菜单太复杂了,我必须加载19个纹理(2044x2044)所以我需要显示一个带有进度条的闪光。从该菜单中,您可以选择玩一些迷你游戏或观看一些视频。如果孩子选择玩游戏,我会在游戏纹理加载时显示另一个进度条(另外5/6 2044x2044纹理取决于迷你游戏)。如果孩子回来,请在主菜单中卸载游戏纹理。如果孩子想看一些电影,那么在这种情况下“它会变得更糟”,因为现在我必须切换到“Android活动”而不是AndEngine,所以我卸载主菜单纹理,否则将抛出OutOfMemory。如果孩子回到主菜单,将再次加载所有纹理。我认为这是最好的方法,“延迟加载”,你会发现这种方法可以为你节省大量的内存。

相关问题