更新
感谢Jos van Egmond的评论,告诉我如何实现这一点并仍然从AssetManager
中加载Skin
,因此我决定更新答案。旧答案(以及另一种方法)仍保持不变,请参见下文。
新流程如下:
- 加载字体文件。
- 创建一个
ObjectMap<String, Object>
并将您的字体放入其中。
- 创建
SkinParameter
并将其作为参数赋予ObjectMap
。
- 通过使用创建的
SkinParameter
像往常一样通过AsserManager
加载您的Skin
。
代码可能看起来像这样:
load font1...
load font2...
ObjectMap<String, Object> fontMap = new ObjectMap<String, Object>();
fontMap.put("font1", font1);
fontMap.put("font2", font2);
SkinParameter parameter = new SkinParameter(fontMap);
assetManager.load("file/location/of/your/skin", Skin.class, parameter);
New
目前被接受的答案实际上有点不正确。这篇博客文章介绍了一种方法,让您在Json文件中引用生成的BitmapFont
。步骤大致如下:
- 使用默认构造函数创建空白皮肤文件。
- 将字体添加到皮肤中。
- 将Atlas文件添加到皮肤中。
- 将Json文件加载到皮肤中。
代码可能会像这样:
// Create a new skin using the default constructor and
// add your fonts to it.
Skin skin = new Skin();
skin.add("myFont", myFont, BitmapFont.class);
// Remember that this texture atlas is NOT automatically disposed by the skin,
// so keep a reference and dispose of it yourself.
skin.addRegion(new TextureAtlas("file/location/of/your/atlas");
skin.load(Gdx.files.internal("file/location/of/your/skin"));
您现在可以在皮肤Json中像这样执行操作:
...,
font: "myFont",
...
尽管这是一个解决方法,但也意味着您无法(至少我没有找到方法)通过
AssetManager
加载您的皮肤。不过,您仍然可以通过管理器加载
TextureAtlas
。