Libgdx皮肤处理行为

Libgdx皮肤处理行为,libgdx,assets,skin,Libgdx,Assets,Skin,我有一个关于libgdx皮肤行为的问题。 我正在开发的游戏有一个全局资产管理器(来自libgdx套件),每个类都可以访问它。 我在这个资源管理器中加载了不同的TextureAtlas 我知道assetManager.dispose()处理资产管理器中加载的所有资源 现在,我还希望在assets manager中加载一个皮肤(用于GUI)。 皮肤将使用几种纹理玻璃 这里有一个问题:既然我要使用skin.addRegion(),而且关于skin类的在线API参考说“当皮肤被处理时,atlas不会被自

我有一个关于libgdx皮肤行为的问题。 我正在开发的游戏有一个全局资产管理器(来自libgdx套件),每个类都可以访问它。 我在这个资源管理器中加载了不同的TextureAtlas 我知道assetManager.dispose()处理资产管理器中加载的所有资源

现在,我还希望在assets manager中加载一个皮肤(用于GUI)。 皮肤将使用几种纹理玻璃

这里有一个问题:既然我要使用skin.addRegion(),而且关于skin类的在线API参考说“当皮肤被处理时,atlas不会被自动处理”,那么在global assets manager中加载皮肤的所有TextureAtlas是一个好主意吗

我担心这次行动。因为当我调用assetManager.dispose()时,会在dispose方法上调用TextureAtlas和Skin…但是如果TextureAtlas在Skin之前被释放呢? 真的会有什么问题吗

皮肤行为不是很明确,我的意思是…dispose方法做什么

提前感谢,

Luca

skin.dispose()
调用任何可处置的特定资源上的dispose。但TextureAtlas本身不是“资源”之一,因此必须手动将其与皮肤分开处理

我能想到的一次性皮肤资源的唯一例子是BitmapFont,它不使用皮肤使用的TextureAtlas

请注意,决不要对使用AssetManager加载的对象调用
dispose
。相反,您应该在该资源上调用
manager.unload()
,以便AssetManager可以正确地管理依赖项

manager.unload()
的好处在于它跟踪有多少其他资源依赖于该对象,并且只在对象没有依赖关系时才对其进行处理。因此,如果您也使用AssetManager加载皮肤,您只需担心调用
manager.unload(“mySkin”)
,它就会正确地确定是否也应该处理关联的TextureAtlas

但是,每次在同一资源上调用
load()
时,请确保只对资源调用一次
unload()
。AssetManager的内部依赖项计数确实依赖于所有的
load()
unload()
调用,它们一对一地相互镜像。

skin.dispose()
调用对任何
一次性的特定资源进行dispose处理。但TextureAtlas本身不是“资源”之一,因此必须手动将其与皮肤分开处理

我能想到的一次性皮肤资源的唯一例子是BitmapFont,它不使用皮肤使用的TextureAtlas

请注意,决不要对使用AssetManager加载的对象调用
dispose
。相反,您应该在该资源上调用
manager.unload()
,以便AssetManager可以正确地管理依赖项

manager.unload()
的好处在于它跟踪有多少其他资源依赖于该对象,并且只在对象没有依赖关系时才对其进行处理。因此,如果您也使用AssetManager加载皮肤,您只需担心调用
manager.unload(“mySkin”)
,它就会正确地确定是否也应该处理关联的TextureAtlas

但是,每次在同一资源上调用
load()
时,请确保只对资源调用一次
unload()
。AssetManager的内部依赖项计数确实依赖于所有的
load()
unload()
调用,它们一对一地相互镜像。

skin.dispose()
调用对任何
一次性的特定资源进行dispose处理。但TextureAtlas本身不是“资源”之一,因此必须手动将其与皮肤分开处理

我能想到的一次性皮肤资源的唯一例子是BitmapFont,它不使用皮肤使用的TextureAtlas

请注意,决不要对使用AssetManager加载的对象调用
dispose
。相反,您应该在该资源上调用
manager.unload()
,以便AssetManager可以正确地管理依赖项

manager.unload()
的好处在于它跟踪有多少其他资源依赖于该对象,并且只在对象没有依赖关系时才对其进行处理。因此,如果您也使用AssetManager加载皮肤,您只需担心调用
manager.unload(“mySkin”)
,它就会正确地确定是否也应该处理关联的TextureAtlas

但是,每次在同一资源上调用
load()
时,请确保只对资源调用一次
unload()
。AssetManager的内部依赖项计数确实依赖于所有的
load()
unload()
调用,它们一对一地相互镜像。

skin.dispose()
调用对任何
一次性的特定资源进行dispose处理。但TextureAtlas本身不是“资源”之一,因此必须手动将其与皮肤分开处理

我能想到的一次性皮肤资源的唯一例子是BitmapFont,它不使用皮肤使用的TextureAtlas

请注意,决不要对使用AssetManager加载的对象调用
dispose
。相反,您应该在该资源上调用
manager.unload()
,以便AssetManager可以正确地管理依赖项

manager.unload()
的好处在于它跟踪有多少其他资源依赖于该对象,并且只在对象没有依赖关系时才对其进行处理。因此,如果您还使用AssetManager加载皮肤,您只需要
assetManager.load("images/guiTextureAtlas", TextureAtlas.class);
assetsManager.load("skin/uiSkin.json", Skin.class)";

assetsManager.finishLoading();

Skin uiSkin = assetManager.get("skin/uiSkin.json");
uiSkin.addRegion(assetManager.get("images/guiTextureAtlas");