【问题标题】:Does Libgdx AssetManager construct a new object every time the get method is called?Libgdx AssetManager 每次调用 get 方法时都会构造一个新对象吗?
【发布时间】:2014-11-19 06:37:05
【问题描述】:

如果我使用 LibGDX AssetManager 加载 TextureAtlas,它是否会在加载时自动构造一个新的 TextureAtlas,然后每次调用 get 方法时将地址返回给该对象?或者它实际上是在每次调用 get 方法时构造一个新的 TextureAtlas 吗?

我试图实现的行为是前者。我扩展了 Sprite 类,使其包含与精灵对应的图集和纹理区域的文件名。我希望能够读取包含这些名称的 JSON 文件,然后根据 JSON 文件初始化精灵,但我不希望每个精灵都构造一个新的 TextureAtlas,以便它可以读取纹理区域。相反,我希望每个精灵都包含对单个 TextureAtlas 的引用。

【问题讨论】:

    标签: java libgdx


    【解决方案1】:

    您应该编写一个 JSON Serializer,在读取 TextureAtlas 的名称后,将通过 AssetManager 检索该图集。这样,您将节省资源,并且每个图集只有一次。不过,您必须确保首先加载了地图集。

    AssetManagerTextureAtlas 非常相似。 AssetManager.get(...) 等价于 TextureAtlas.find(...)。它们都不会创建任何新对象。每次调用 get() 或 find() 时,它们都会返回相同的对象。

    【讨论】:

      【解决方案2】:

      AssetManager.load() 会将资源(例如 TextureAtlas)添加到加载队列。

      AssetManager.finishLoading() 将创建/构造加载队列中的资产。
      AssetManager.update() 将执行与上述相同的操作,直到它返回 true。

      AssetManager.get() 将返回已创建/现有的资产,不会创建新资产。

      【讨论】:

        猜你喜欢
        • 2015-06-30
        • 1970-01-01
        • 1970-01-01
        • 2016-12-21
        • 2020-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多