LibGDX使用AssetManager

时间:2017-07-15 06:24:56

标签: android libgdx assets

Managing your assets中说以下编码会导致问题 public static AssetManager assets = new AssetManager(); 但我不明白上面的代码和下一个代码之间的区别:

public class AssetSingleton {    
    private static final AssetSingleton instance = new AssetSingleton();

    private final AssetManager assets = new Assets();

    public AssetManager getAssets(){
        return assets;
    }
}

...........................................

AssetManager manager = AssetSingleton.instance.getAssets();

那么为什么第一段代码在暂停/恢复Android应用程序时不安全? 我必须以何种方式存储AssetManager实例? LibGDX文档中没有示例。 在书#34;学习LibGDX游戏开发第2版"使用了包含assetmanager实例的单例,并且在恢复/暂停时,这个单例加载/卸载资源。

也在Managing your assets中说:

  

如果您没有按照最后一个片段中的说明设置AssetManager,那么通常的托管纹理机制会启动,因此您不必担心任何事情。

我是否理解正确:如果我没有单身,我不使用AssetManager的静态实例 - 资产将由LibGDX自动加载和卸载。如果是这样 - 怎么样?差异是什么?

1 个答案:

答案 0 :(得分:0)

  1. 对资产进行静态引用尤其糟糕,因为静态的生命周期可能与创建资源的上下文的生命周期不同。请查看此answer以获取详细信息。 / p>

  2. 如果你想在恢复游戏时显示载入画面,你可以使用

    Texture.setAssetManager(manager);
    
      

    如果你没有按照上面的说法设置AssetManager,那么   通常的托管纹理机制会启动,所以你不必这样做   担心任何事情。