LibGdx-从assetmanager加载外观

LibGdx-从assetmanager加载外观,libgdx,Libgdx,因此,我可以像这样在assetManager中加载蒙皮: manager.load(skinAtlas, TextureAtlas.class); manager.load(menuSkin, Skin.class, new SkinLoader.SkinParameter(skinAtlas)); 但是如果我想在运行时添加.ttf字体,我将如何做呢?i、 e: skin = new Skin(); skin.add("smallFont", smallFontT, BitmapFont.cl

因此,我可以像这样在assetManager中加载蒙皮:

manager.load(skinAtlas, TextureAtlas.class);
manager.load(menuSkin, Skin.class, new SkinLoader.SkinParameter(skinAtlas));
但是如果我想在运行时添加.ttf字体,我将如何做呢?i、 e:

skin = new Skin();
skin.add("smallFont", smallFontT, BitmapFont.class);
skin.load(assetManager.getManager().get(assetManager.menuSkin, Skin.class)); //this does not work

如果Json样式不依赖于该特定字体,则可以在加载外观后从资产管理器获取外观对象引用后随时将其添加到现有外观中。使用
skin.add(“smallFont”,smallFontT)
将字体添加到现有外观

您还可以在JSON文件之前指定要添加到皮肤的其他对象,以便JSON文件可以依赖它们。但要使用AssetManager执行此操作,必须在AssetManager将JSON文件加载到皮肤之前加载这些资产

因此,您可以首先在不使用AssetManager的情况下直接加载这些资产,也可以使用AssetManager加载它们(将它们添加到管理器中,并在将外观添加到管理器之前在管理器上完成加载)。无论哪种方式,您都需要获得对JSON需要引用的每个资产的引用

然后将它们放在ObjectMap中。例如:

ObjectMap<String, Object> resources = new ObjectMap<String, Object>();
resources.put("smallFont", smallFontT); //assuming smallFontT is a reference to a BitmapFont object

现在JSON中的样式可以引用名为“smallFont”的字体。

这导致了一个错误不幸的是,我提出了另一个问题:
manager.load(skinAtlas, TextureAtlas.class); //I'm assuming skinAtlas is a String path to your atlas
manager.load(menuSkin, Skin.class, new SkinLoader.SkinParameter(skinAtlas, resources));