【问题标题】:Error loading json ui-skin file from android/assets从 android/assets 加载 json ui-skin 文件时出错
【发布时间】:2016-10-07 15:12:14
【问题描述】:

我有 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$1.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$3.read(Skin.java:472)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$3.read(Skin.java:463)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:428)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:852)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:449)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:438)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:434)
    at com.badlogic.gdx.utils.Json.readValue(Json.java:884)
    at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:428)
    at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)
    ... 5 more

【问题讨论】:

  • 您是否忘记将 Razer.fnt 也移动到 Android 资产目录中的同一 ui-skins/ 目录中?
  • 谢谢,这是问题之一。

标签: java android json libgdx android-assets


【解决方案1】:

我发现了你的错误:

找不到字体文件:Razer.fnt,如错误日志中所述。

记住,你需要你的 font.fnt 文件和你的 font.png 文件在同一个文件夹结构中,就像以前一样(我猜在同一个文件夹中,作为你的 JSON 文件)。

希望有帮助

€dit:进一步解释为什么需要 font.png
如果您查看您的 .fnt 文件,您会看到,它只是描述字体的 .png 的文本。在这个 .png 中是字形。

【讨论】:

    【解决方案2】:

    在这里测试你的 json

    http://jsonlint.com/

    您需要将字符串放在引号内,如下所示:

    { “com.badlogic.gdx.graphics.g2d.BitmapFont”:{ ...

    【讨论】:

    • 在 LibGDX 中是不必要的。 LibGDX Json 解析器被设计为不需要引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2015-08-25
    • 2011-11-21
    相关资源
    最近更新 更多