2015-04-20 53 views
0

我正在构建一个包含几个迷你游戏的游戏。每个迷你游戏都有自己的屏幕。正确的资产处置与LibGdx AssetManager

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

我的问题是,使用AssetManager,当从一个迷你游戏切换到另一个迷你游戏时,我将如何最好地处理资产? manager.dispose()将无法​​工作,因为这将处理所有内容,并且只在应用程序启动时才加载。

目前我HANDELING这样的:

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 
    } 

回答

0

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

例如:

public void loadAssets(int screen) { 

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

} 

这同样与Dispose()方法

只是做manager.clear()

这是一个非常好的来源为:Here

+0

我已经考虑过这种方法,认为这是我将要使用的方法,我添加的迷你游戏越多,它就越不会加载app上的所有资源 - 开始 – WEDEBE

+0

但是,这确实会产生问题,即您将处理菜单屏幕资产。这可能不是最佳 – WEDEBE

+0

@WEDEBE那么你可以不使用manager.clear()并使用manager.unload你加载的任何资产。创建一个字符串列表并使用这些字符串来记录您的文件名 – Fish