将 Freetypefont 放入 libgdx 皮肤
在我的uiskin.json中,我有这个
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: text/default.fnt } }
当我有默认值时.fnt在assets文件夹中的文本文件夹中,这很好...
但是我想使用Freetypefont。
如何创建一个Freetypefont并将其加载到uiskin文件中?
在我的uiskin.json中,我有这个
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: text/default.fnt } }
当我有默认值时.fnt在assets文件夹中的文本文件夹中,这很好...
但是我想使用Freetypefont。
如何创建一个Freetypefont并将其加载到uiskin文件中?
感谢Jos van Egmond的评论告诉我如何做到这一点,并且仍然加载我决定更新答案。旧的答案(以及这样做的另一种方式)在下面仍然没有改变。Skin
AssetManager
新过程如下所示:
一个 ObjectMap<String、Object>
并将字体放入此地图中。SkinParameter
ObjectMap
Skin
AsserManager
SkinParameter
代码可能如下所示:
/* 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);
目前接受的答案实际上(有点)不正确。这篇博客文章介绍了一种在 Json 文件中引用生成的 s 的方法。该过程如下所示:BitmapFont
代码可能如下所示:
// 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
事先无法执行此操作,因为您将在运行时生成它。
我的解决方法是保持默认字体不变,并在运行时通过代码替换它。你可以使用 Skin.add(...)
来实现这一点。
BitmapFont newDefaultFont = FreeTypeFontGenerator...;
skin.add("default-font", newDefaultFont, BitmapFont.class);