アセットマネージャを使用してスキンをロードしていて、エラーが発生しています(There is no Bitmapfont registered with name: font_dpb_59
)。私はjson-fileでこのフォントを使ってLabel-styleを作成しようとしています。 スキンのパラメータにフォントとアトラスを追加していますが、ここで何か不足していますか?LibGdx - アセットマネージャからjsonファイルをロード中にエラーが発生しました
私はこのような私の肌をロードする:あなたは、私がパラメータとしてフォントを追加参照して、エラーを取得することができたよう
ObjectMap<String, Object> font_map = new ObjectMap<String, Object>();
font_map.put("font_dpb_59", font_dpb_59);
font_map.put("font_dpm_40", font_dpm_40);
//... some more fonts
manager.load(skinAtlas, TextureAtlas.class);
manager.load(menuSkin, Skin.class, new SkinLoader.SkinParameter(skinAtlas, font_map));
。私は間違って何をしているのか分からず、フォントはスキンの前に読み込まれます。
のフルスタックトレース:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: com.badlogic.gdx.utils.SerializationException: Error reading file: menu_ui/ui_skin.json
at com.badlogic.gdx.assets.AssetManager.handleTaskError(AssetManager.java:570)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:375)
at com.scene2d.space_camp.MyGdxGame.create(MyGdxGame.java:127)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: menu_ui/ui_skin.json
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:97)
at com.badlogic.gdx.assets.loaders.SkinLoader.loadSync(SkinLoader.java:75)
at com.badlogic.gdx.assets.loaders.SkinLoader.loadSync(SkinLoader.java:38)
at com.badlogic.gdx.assets.AssetLoadingTask.handleAsyncLoader(AssetLoadingTask.java:141)
at com.badlogic.gdx.assets.AssetLoadingTask.update(AssetLoadingTask.java:90)
at com.badlogic.gdx.assets.AssetManager.updateTask(AssetManager.java:498)
at com.badlogic.gdx.assets.AssetManager.update(AssetManager.java:373)
... 3 more
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: menu_ui/ui_skin.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:694)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
... 9 more
Caused by: com.badlogic.gdx.utils.SerializationException: Serialization trace:
{}."com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle".font_dpb_59.font
font (com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle)
at com.badlogic.gdx.utils.Json.readFields(Json.java:804)
at com.badlogic.gdx.utils.Json.readValue(Json.java:919)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:408)
at com.badlogic.gdx.utils.Json.readValue(Json.java:852)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:429)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:418)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:414)
at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:408)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)
... 10 more
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: No com.badlogic.gdx.graphics.g2d.BitmapFont registered with name: font_dpb_59
at com.badlogic.gdx.scenes.scene2d.ui.Skin.get(Skin.java:149)
at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:407)
at com.badlogic.gdx.utils.Json.readFields(Json.java:797)
... 19 more
これはここに役立ちます場合は、私のJSONファイルです:
{
"com.badlogic.gdx.graphics.Color": {
"white": {
"r": 1, "g": 1, "b": 1, "a": 1
}
},
"com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle": {
"font_dpb_59": {
"font": "font_dpb_59", "fontColor": "white"
}
},
"com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle": {
"txt_btn_white": {
"up": "button1",
"down": "button1",
"font": "font_dpb_59",
"fontColor": "white",
"pressedOffsetX": 1,
"pressedOffsetY": -1 }
},
"com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle": {
"btn_white": {
"up": "button1" ,
"down": "button1",
"pressedOffsetX": 1,
"pressedOffsetY": -1 }
},
"com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle": {
"default": { }
},
"com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle": {
"default": { "titleFont": "font_dpb_59", "titleFontColor": "white" }
}
}
EDIT:
FileHandleResolver resolver = new InternalFileHandleResolver();
manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
manager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
FreetypeFontLoader.FreeTypeFontLoaderParameter params59 = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
params59.fontFileName = font_dpb_59;
params59.fontParameters.size = 59;
manager.load(font_dpb_59, BitmapFont.class, params59);
:
これは私がフォントをロードする方法であります
問題があるかどうか不明です。あなたのフォントはBitmapFontオブジェクトではありませんか? BitmapFontのサブクラスであれば、スキンにBitmapFontとして登録されません。 – Tenfour04
@ Tenfour04は、どのようにbitmapfontオブジェクトをロードするかを示すコードを追加しました。これはすべて同時にロードされるので(つまり、決してfinishLoadingを呼び出すことはできません)、フォントはスキンの前にロードされませんか?私はスキンの前にフォントをロードするので、ちょっと変わってしまうでしょう。 –
読み込みが完了していない場合、どのようにBitmapFontへの参照を持っていますか?私は、はい、これが問題だと言うでしょう。実際には、 'font_dpb_59'はあなたのFontFileNameパラメータであることが疑わしいです。なぜなら、それはObjectMapに入れたリソースの名前だからです。たぶんBitmapFontsの代わりにStringをSkinParameterに渡したことがあります。 – Tenfour04