每次调用get方法时,Libgdx AssetManager是否构造了一个新对象?

时间:2014-11-19 06:37:05

标签: java libgdx

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

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

2 个答案:

答案 0 :(得分:0)

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

AssetManager.finishLoading()将创建/构建加载队列中的资产 如果连续调用,AssetManager.update()将执行与上面相同的操作,直到它返回true。

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

答案 1 :(得分:0)

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

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