直到我所做的所有阅读中,我确信我不能将freefonttype直接放入uiskin.json中,就像Bitmap字体一样,我必须在运行时以编程方式将它们添加到皮肤中。
试图按照这个解决方案,但我得到uiskin.json没有加载错误,因为我试图使用AssetManager访问皮肤。 http://badlogicgames.com/forum/viewtopic.php?f=11&t=10152
public void loadSkins() {
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(Gdx.files.internal("font/font.ttf"));
FreeTypeFontGenerator.FreeTypeFontParameter parameter = new FreeTypeFontGenerator.FreeTypeFontParameter();
parameter.size = 32;
BitmapFont font12 = generator.generateFont(parameter); // font size 12 pixels
generator.dispose();
Skin skin = new Skin();
skin.add("myfont", font12, BitmapFont.class);
skin.load(Gdx.files.internal("data/uiskin.json"));
}
此代码位于我的AssetManager类中,除了uiskin.json
外,所有资产都被加载如果我用以下代码替换loadSkins中的整个代码,那么它就会被加载。
manager.load("data/uiskin.json", Skin.class);
现在,如果我尝试访问我的Skin类,应用程序崩溃,资产uiskin.json未加载错误。以下是我访问Skin类的方法
manager.get("data/uiskin.json");
答案 0 :(得分:0)
也就是说,因为您需要使用资产管理器加载皮肤,而不仅仅是皮肤。资产管理器中有一个名为SkinLoader的额外加载器。如果你给它纹理图谱,它应该加载你的皮肤。
注意:我正在从皮肤中单独加载字体。并在以后添加。如果要引用.json文件中的字体,则需要在尝试加载外观并向SkinLoader添加另一个参数之前调用Assetmanager.finishLoading(): ObjectMap< String,Object> add objectMap.put()的字体,并将其添加到带有
的SkinLoader 新SkinLoader.SkinParameter(“skins / uiskin.atlas”, objectMap )
// Queue font
FileHandleResolver resolver = new InternalFileHandleResolver();
app.assetManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
app.assetManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
FreetypeFontLoader.FreeTypeFontLoaderParameter params = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
params.fontFileName = "font/stay_writer.ttf";
params.fontParameters.size = 30;
app.assetManager.load("stay_writer_30.ttf", BitmapFont.class, params);
// Queue Skin
app.assetManager.load("skins/uiskin.atlas", TextureAtlas.class);
app.assetManager.load("skins/uiskin.json", Skin.class, new SkinLoader.SkinParameter("skins/uiskin.atlas"));
稍后将字体添加到皮肤:
skin.add("default-font", app.assetManager.get("stay_writer_30.ttf", BitmapFont.class));
其中“default-font”是.json文件中字体的名称,“stay_writer_30.ttf”是freetypefont的名称。