首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LIBGDX获取此错误的com.badlogic.gdx.utils.SerializationException:错误读取文件: ui/uiskin.json,仅在ANDROID上

LIBGDX获取此错误的com.badlogic.gdx.utils.SerializationException:错误读取文件: ui/uiskin.json,仅在ANDROID上
EN

Stack Overflow用户
提问于 2022-09-08 00:59:12
回答 1查看 100关注 0票数 2

正如标题中所述,在android仿真器上运行应用程序时,只在上运行时,会出现读取文件的错误,否则在桌面启动程序上运行良好。

到目前为止,我已经尝试重新启动android并确保com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle:没有出现在json文件中,但它们都没有工作。

任何建议都会感谢,因为我是无知的。这似乎只有在使用textFields时才会出现,它使用我的菜单屏幕上的皮肤,这与im一样奇怪,只使用LIBGDX工具提供的默认uiskins。

首先,我将向您展示所讨论的代码行(如第58行所述)将在下面紧跟着JSON文件,其次是完整的错误报告第三行:

  1. 所讨论的代码行:

skin =新Skin(Gdx.files.internal("ui/uiskin.json"));

  1. 和JSON文件如下所示:

代码语言:javascript
运行
复制
{
com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: 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.Slider$SliderStyle: {

    default-horizontal: { background: default-slider, knob: default-slider-knob }

},

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 }


}

}

  1. ,这里是完整的错误报告:

代码语言:javascript
运行
复制
E/AndroidRuntime: FATAL EXCEPTION: GLThread 2341
    Process: com.mygdx.game, PID: 842
    com.badlogic.gdx.utils.SerializationException: Error reading file: ui/uiskin.json
        at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:106)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:83)
        at com.mygdx.game.scenes.MenuUI.<init>(MenuUI.java:58)
        at com.mygdx.game.screens.MainMenu.<init>(MainMenu.java:41)
        at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:24)
        at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:281)
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1557)
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1272)
     Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: ui/uiskin.json
        at com.badlogic.gdx.utils.Json.fromJson(Json.java:803)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:104)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:83) 
        at com.mygdx.game.scenes.MenuUI.<init>(MenuUI.java:58) 
        at com.mygdx.game.screens.MainMenu.<init>(MainMenu.java:41) 
        at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:24) 
        at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:281) 
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1557) 
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1272) 
     Caused by: com.badlogic.gdx.utils.SerializationException: Font file not found: default.fnt
        at com.badlogic.gdx.scenes.scene2d.ui.Skin$3.read(Skin.java:541)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin$3.read(Skin.java:532)
        at com.badlogic.gdx.utils.Json.readValue(Json.java:1006)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:469)
        at com.badlogic.gdx.utils.Json.readValue(Json.java:972)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.readNamedObjects(Skin.java:518)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:507)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin$2.read(Skin.java:501)
        at com.badlogic.gdx.utils.Json.readValue(Json.java:1006)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin$1.readValue(Skin.java:469)
        at com.badlogic.gdx.utils.Json.fromJson(Json.java:801)
        at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:104) 
        at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:83) 
        at com.mygdx.game.scenes.MenuUI.<init>(MenuUI.java:58) 
        at com.mygdx.game.screens.MainMenu.<init>(MainMenu.java:41) 
        at com.mygdx.game.MyGdxGame.create(MyGdxGame.java:24) 
        at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:281) 
        at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1557) 
        at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1272) 
EN

回答 1

Stack Overflow用户

发布于 2022-09-09 10:42:01

错误是找不到字体文件。桌面可以适应Android资产的位置要求,但不是相反的。看看这个

Managing assets between desktop and device version in libgdx

因此,如果libGDX资产都进入Android想要的assets目录,就更容易了,因为json中的这一行必须检查默认位置com.badlogic.gdx.graphics.g2d.BitmapFont: { default-font: { file: default.fnt } }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73642733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档