在我的uiskin.json中我有这个
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: text/default.fnt } }
这适用于我在assets文件夹的text文件夹中有default.fnt ...
但是我想使用Freetypefont。
如何创建Freetypefont并将其加载到uiskin文件中?
答案 0 :(得分:10)
感谢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);
当前接受的答案实际上(种类)不正确。 This blog post描述了一种在Json文件中引用生成的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
。
答案 1 :(得分:4)
事先不可能这样做,因为你打算在运行时生成它。
我的解决方法是保持默认字体不变,并在运行时通过代码替换它。您可以使用Skin.add(...)
。
BitmapFont newDefaultFont = FreeTypeFontGenerator...;
skin.add("default-font", newDefaultFont, BitmapFont.class);