【问题标题】:Proper asset disposal with LibGdx AssetManager使用 LibGdx AssetManager 正确处理资产
【发布时间】:2015-04-20 10:27:59
【问题描述】:

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

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

我的问题是,使用 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
    }

【问题讨论】:

    标签: libgdx assets


    【解决方案1】:

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

    例如:

    public void loadAssets(int screen) {
    
    if(screen ==1)
    //...Load assets
    if(screen ==2)
    //...Load different Assets
    
    }
    

    dispose() 也是如此

    只需执行 manager.clear()

    这是一个很好的阅读来源:Here

    【讨论】:

    • 我已经考虑过这种方法,认为这是我将要使用的方法,我添加的小游戏越多,在 app-start 上不加载所有资产就越有意义
    • 但是,这确实会产生问题,即您将同时处理菜单屏幕资产。这可能不是最佳的
    • @WEDEBE 好吧,您不能使用 manager.clear() 并使用 manager.unload 您加载的任何资产。创建一个字符串列表并使用这些字符串记录您的文件名
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 2017-12-20
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多