使用LibGdx资产管理器正确处置资产

使用LibGdx资产管理器正确处置资产,libgdx,assets,Libgdx,Assets,我正在构建一个包含几个小游戏的游戏。每个迷你游戏都有自己的屏幕 现在我在启动应用程序时加载所有资产,而不是每个迷你游戏的特定资产 我的问题是,使用AssetManager,在从一个迷你游戏切换到另一个迷你游戏时,我如何最好地处置资产?manager.dispose将不起作用,因为它将处理所有内容,并且仅在应用程序启动时加载 目前我是这样处理的: atlas = GdxAssetManager.manager.get(GdxAssetManager.runner, TextureAtlas.cla

我正在构建一个包含几个小游戏的游戏。每个迷你游戏都有自己的屏幕

现在我在启动应用程序时加载所有资产,而不是每个迷你游戏的特定资产

我的问题是,使用AssetManager,在从一个迷你游戏切换到另一个迷你游戏时,我如何最好地处置资产?manager.dispose将不起作用,因为它将处理所有内容,并且仅在应用程序启动时加载

目前我是这样处理的:

atlas = GdxAssetManager.manager.get(GdxAssetManager.runner, TextureAtlas.class);
当迷你游戏结束后,我回到菜单,我称之为:

 public void dispose(){
        for(int i = 0; i < obstacles.size; i++){
            obstacles.get(i).dispose(); //unload the assets from each object in this array
        }
        GdxAssetManager.manager.unload(GdxAssetManager.runner); //unload the atlas in example code above
        scoreHandler.dispose(); //unloading object assets
    }

好吧,如果我是你,我会在你的GdxAssetManager中创建一个方法,我猜这是你自己定制的,可以帮助你选择在哪个屏幕中加载哪些资产

例如:

public void loadAssets(int screen) {

if(screen ==1)
//...Load assets
if(screen ==2)
//...Load different Assets

}
这同样适用于dispose

做经理就行了,明白了吗


这是一个非常好的阅读来源:

我已经考虑过这种方法,我认为这是我将使用的方法,我添加的迷你游戏越多,不在应用程序上加载所有资源就越有意义。然而,这确实会带来一个问题,即您也会处理菜单屏幕资源。也许不是optimal@WEDEBE你不能使用manager.clear和manager.unload来卸载你加载的任何资产。创建一个字符串列表,并使用这些字符串记录文件名