Update
Thanks to a comment from Jos van Egmond telling me how to do this and still load the Skin
from the AssetManager
I have decided to update the answer. The old answer (and the alternative way of doing this) still remains untouched below.
The new procedure goes like this:
- Load your font files.
- Create an
ObjectMap<String, Object>
and put your fonts in this map.
- Create a
SkinParameter
and give it the ObjectMap
as a parameter.
- Load your
Skin
through the AsserManager
as usual using the created SkinParameter
.
The code might look something like this:
/* Load your fonts */
load font1...
load font2...
/* Create the ObjectMap and add the fonts to it */
ObjectMap<String, Object> fontMap = new ObjectMap<String, Object>();
fontMap.put("font1", font1);
fontMap.put("font2", font2);
/* Create the SkinParameter and supply the ObjectMap to it */
SkinParameter parameter = new SkinParameter(fontMap);
/* Load the skin as usual */
assetManager.load("file/location/of/your/skin", Skin.class, parameter);
Old
The current accepted answer is actually (kind of) incorrect. This blog post describes a way for you to reference generated BitmapFont
s in your Json file. The procedure goes something like this:
- Create blank skin file using the default constructor.
- Add your fonts to the skin.
- Add your atlas file to your skin.
- Load your Json file to your skin.
The code might look something like this:
// 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"));
You can now do something like this in your skin Json:
...,
font: "myFont",
...
Although this is a workaround this also means that you cannot (at least I haven't found a way to) load your skin through an AssetManager
. You can still load the TextureAtlas
through the manager though.