从 android/assets 加载 json ui-皮肤文件时出错
Error loading json ui-skin file from android/assets
我有 default.json
文件,用于将皮肤设置为 ui 组件。之前的文件位置在项目包core/src/com/mygame中,其中有以下数据:
{
com.badlogic.gdx.graphics.g2d.BitmapFont: {
default-font: {
file: Razer.fnt
}
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: {
up: default-round,
down: default-round-down,
font: default-font
},
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: {
titleFont: default-font
}
}
}
然后我会在 onCreate
方法中加载该文件
skin = new Skin(Gdx.files.internal("default.json"));
哪个有效。
但是,现在我决定将该文件移动到名为 ui-skins/
的资产文件夹中的 android 项目。问题是,当我尝试从路径 Gdx.files.internal("ui-skins/default.json")
:
加载该文件时出现错误
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: ui-skins/default.json
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:98)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:75)
at com.unknown.game.MyUnknownGame.create(MyUnknownGame.java:32)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: ui-skins/default.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:694)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:96)
... 4 more
Caused by: com.badlogic.gdx.utils.SerializationException: Font file not found: Razer.fnt
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:472)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:463)
at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.readValue(Skin.java:428)
at com.badlogic.gdx.utils.Json.readValue(Json.java:852)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.readNamedObjects(Skin.java:449)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:438)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:434)
at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.readValue(Skin.java:428)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)
... 5 more
在此处测试您的 json
您需要将字符串放在引号内,如下所示:
{
"com.badlogic.gdx.graphics.g2d.BitmapFont":{
...
我发现了你的错误:
找不到字体文件:Razer.fnt 如错误日志中所述。
记住,你需要你的 font.fnt 文件和你的 font.png 文件在同一个文件夹结构中,就像以前一样(我想在同一个文件夹中,作为你的 JSON 文件).
希望对您有所帮助
€dit:进一步解释为什么你需要 font.png
如果查看 .fnt 文件,您会发现它只是文本,描述了字体的 .png。在这个 .png 中是字形。
我有 default.json
文件,用于将皮肤设置为 ui 组件。之前的文件位置在项目包core/src/com/mygame中,其中有以下数据:
{
com.badlogic.gdx.graphics.g2d.BitmapFont: {
default-font: {
file: Razer.fnt
}
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
default: {
up: default-round,
down: default-round-down,
font: default-font
},
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
default: {
titleFont: default-font
}
}
}
然后我会在 onCreate
方法中加载该文件
skin = new Skin(Gdx.files.internal("default.json"));
哪个有效。
但是,现在我决定将该文件移动到名为 ui-skins/
的资产文件夹中的 android 项目。问题是,当我尝试从路径 Gdx.files.internal("ui-skins/default.json")
:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: ui-skins/default.json
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:98)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:75)
at com.unknown.game.MyUnknownGame.create(MyUnknownGame.java:32)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:147)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.run(LwjglApplication.java:124)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: ui-skins/default.json
at com.badlogic.gdx.utils.Json.fromJson(Json.java:694)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:96)
... 4 more
Caused by: com.badlogic.gdx.utils.SerializationException: Font file not found: Razer.fnt
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:472)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:463)
at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.readValue(Skin.java:428)
at com.badlogic.gdx.utils.Json.readValue(Json.java:852)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.readNamedObjects(Skin.java:449)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:438)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.read(Skin.java:434)
at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
at com.badlogic.gdx.scenes.scene2d.ui.Skin.readValue(Skin.java:428)
at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)
... 5 more
在此处测试您的 json
您需要将字符串放在引号内,如下所示:
{ "com.badlogic.gdx.graphics.g2d.BitmapFont":{ ...
我发现了你的错误:
找不到字体文件:Razer.fnt 如错误日志中所述。
记住,你需要你的 font.fnt 文件和你的 font.png 文件在同一个文件夹结构中,就像以前一样(我想在同一个文件夹中,作为你的 JSON 文件).
希望对您有所帮助
€dit:进一步解释为什么你需要 font.png
如果查看 .fnt 文件,您会发现它只是文本,描述了字体的 .png。在这个 .png 中是字形。