android - LibGDX - 读取文件 : uiskin. json 时出错

标签 android json libgdx

我发现了一些关于这个主题的类似问题,但没有一个对我有帮助。 我已经从 Github 下载了“uiskin.xxx”和“default.fnt”文件以使用一些测试 Assets 启动游戏,但 uiskin.json 文件似乎有问题。 所有文件都在 android/assets/Skins 文件夹中。

这是加载 json 文件的代码:

public class Assets {
public static AssetManager manager = new AssetManager();
public static Skin menuSkin;

public static void queueLoading() {

    manager.load("Skins/uiskin.atlas", TextureAtlas.class);
    manager.load("Ressources/DemonHunter.jpg", Texture.class);
    manager.load("Ressources/DemonWarrior.jpg", Texture.class);
    manager.load("Ressources/WingedDemon.jpg", Texture.class);
    manager.load("Ressources/Viking.jpg", Texture.class);

}

public static void setMenuSkin() {

    if (menuSkin == null)
        menuSkin = new Skin(Gdx.files.internal("Skins/uiskin.json"),
                manager.get("Skins/uiskin.atlas", TextureAtlas.class));

}

public static boolean update() {
    return manager.update();
}
}

这是 json 文件:

{
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: Skins/default.fnt } },
com.badlogic.gdx.graphics.Color: {
    green: { a: 1, b: 0, g: 1, r: 0 },
    white: { a: 1, b: 1, g: 1, r: 1 },
    red: { a: 1, b: 0, g: 0, r: 1 },
    black: { a: 1, b: 0, g: 0, r: 0 },
},
com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: {
    dialogDim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.45 } },
},
com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle: {
    default: { down: default-round-down, up: default-round },
    toggle: { down: default-round-down, checked: default-round-down, up: default-round }
},
com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: {
    default: { down: default-round-down, up: default-round, font: default-font, fontColor: white },
    toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red }
},
com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle: {
    default: { vScroll: default-scroll, hScrollKnob: default-round-large, background: default-rect, hScroll: default-scroll, vScrollKnob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: {
    default: {
        font: default-font, fontColor: white, background: default-select,
        scrollStyle: default,
        listStyle: { font: default-font, selection: default-select-selection }
    }
},
com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle: {
    default-vertical: { handle: default-splitpane-vertical },
    default-horizontal: { handle: default-splitpane }
},
com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: {
    default: { titleFont: default-font, background: default-window, titleFontColor: white },
    dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim }
},
com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: {
    default-horizontal: { background: default-slider, knob: default-slider-knob },
    default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: {
    default-horizontal: { background: default-slider, knob: default-slider-knob },
    default-vertical: { background: default-slider, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: {
    default: { font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: {
    default: { selection: selection, background: textfield, font: default-font, fontColor: white, cursor: cursor }
},
com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: {
    default: { checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white }
},
com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle: {
    default: { fontColorUnselected: white, selection: selection, fontColorSelected: white, font: default-font }
},
com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle: {
    default: { background: default-pane, knob: default-round-large }
},
com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle: {
    default: { minus: tree-minus, plus: tree-plus, selection: default-select-selection }
},
com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: {
    default: {
        label: { font: default-font, fontColor: white },
        background: default-pane
    }
},
}

我不确定开头的路径是否正确,但我尝试了几种不同的路径以确保那不是错误。

这里是错误:

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.SerializationException: Error reading file: Skins/uiskin.json
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:97)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:82)
    at com.valhallagames.hfp.data.Assets.setMenuSkin(Assets.java:26)
    at com.valhallagames.hfp.screens.Splash.render(Splash.java:34)
    at com.badlogic.gdx.Game.render(Game.java:46)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:215)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:120)
Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: Skins/uiskin.json
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:683)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)
    ... 6 more
Caused by: com.badlogic.gdx.utils.SerializationException: 
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:416)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:410)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:867)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:404)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:681)
    ... 7 more
Caused by: com.badlogic.gdx.utils.reflect.ReflectionException: Class not found: com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle
    at com.badlogic.gdx.utils.reflect.ClassReflection.forName(ClassReflection.java:30)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:414)
    ... 11 more
Caused by: java.lang.ClassNotFoundException: com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.badlogic.gdx.utils.reflect.ClassReflection.forName(ClassReflection.java:28)
    ... 12 more

感谢您的每一个回答 :)。 干杯,乔什弗拉克斯

最佳答案

按照 James Skemp 在评论中的建议,在您的 IDE 中打开 uiskin.json 文件并从中删除以下行或类似行并保存文件:

com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: {
    default: {
        label: { font: default-font, fontColor: white },
        background: default-pane
    }
}

现在它应该可以正常工作了。我不知道为什么会这样。

关于android - LibGDX - 读取文件 : uiskin. json 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31574577/

相关文章:

Android 2.3 Visualizer - 难以理解 getFft()

android - 在 ListView 末尾叠加图像

java - 断言失败 : (d + h * k > 1. 19209290e-7F),函数 InitVelocityConstraints 文件 ... b2MouseJoint.cpp,第 125 行

libgdx:您如何使用 Othographic Camera 定位 3d 模型实例?

android - libgdx 游戏中的通知栏

java - 带有字符串数组 toString() 输出的 JSONObjcet 具有整数值而不是字符串

android - 通过获取 textView 中的字符串来填充 ListView

ios - 如何使用 AFNetworking 解析 JSON 处理 bool 值

java - 是否可以更改 Spring Data 可分页响应的 JSON 名称?

json - 在 JsonBuilder 中关闭 UTF 转义