如果我使用LibGDX AssetManager加载TextureAtlas,它是否在加载时自动构造一个新的TextureAtlas,然后每次调用get方法时都将地址返回给该对象?或者它是否在每次get方法调用时实际构造一个新的TextureAtlas?
我试图实现的行为是前者。我扩展了Sprite类,因此它包含与sprite对应的atlas和纹理区域的文件名。我希望能够读入包含这些名称的JSON文件,然后基于JSON文件初始化sprite,但我不希望每个sprite都构造一个新的TextureAtlas,以便它可以读取纹理区域。相反,我希望每个精灵都包含对单个TextureAtlas的引用。
答案 0 :(得分:0)
AssetManager.load()
会将资源(例如TextureAtlas)添加到加载队列。
AssetManager.finishLoading()
将创建/构建加载队列中的资产
如果连续调用,AssetManager.update()
将执行与上面相同的操作,直到它返回true。
AssetManager.get()
将返回已创建/现有资产,但不会创建新资产。
答案 1 :(得分:0)
您应该编写一个JSON Serializer
,在阅读TextureAtlas
的名称后,将通过AssetManager
检索该地图集。这样你就可以节省资源并且每个地图集只有一次。但是你必须确保首先加载地图集。
AssetManager
与TextureAtlas
非常相似。 AssetManager.get(...)
相当于TextureAtlas.find(...)
。它们都不会创建任何新对象。每次调用get()或find()时,它们都将返回相同的对象。